当前位置: 首页 > news >正文

JAVA EE初阶 6: 网络编程套接字

本节目标:

1.网络编程基础

2.Socket套接字

3.UDP数据报套接字编程

4.TCP流套接字编程

 

 

 

 

 

 

1.网络编程基础



 

 

 

 

 

 

 

 

1.1 原因

 


 

 

 

 

 

1.2 网络编程中的基本概念

 

 

 

 

 

 

 

 

2.Socket套接字


 

 

 

 

 

 

3.UDP数据报套接字编程

3.1 API介绍



 

 

 

 

 

 

3.2 代码示例

 

 

 

UDP Echo Server

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;public class EchoServer {//创建 socket 对象private DatagramSocket socket;//构造方法public EchoServer(int port) throws SocketException  {socket = new DatagramSocket(port);}//启动服务器,完成主要业务逻辑public void start() throws IOException{System.out.println("服务器启动!");while (true) {//1 从客户端读取请求并解析//(1) 创建一个空白的 DatagramPacket 对象DatagramPacket reqPacket = new DatagramPacket(new byte[4096], 4096);//(2) 通过 receive 读取网卡数据,如果网卡没有收到数据,就会阻塞等待。socket.receive(reqPacket);//(3) 把 DatagramPacket 中的数据转换为字符串,只需要从 DatagramPacket 中读取有效数据即可。String request = new String(reqPacket.getData(), 0, reqPacket.getLength());//2 根据请求计算响应String response = process(request);//3 把响应写回客户端//(1) 把响应构成 DatagramPacket 对象DatagramPacket respPacket = new DatagramPacket(response.getBytes(), response.getBytes().length,reqPacket.getSocketAddress());//(2) 把 DatagramPacket 写回给客户端socket.send(respPacket);//4 打印日志System.out.printf("[%s:%d] req: %s, resp: %s\n",reqPacket.getAddress(),reqPacket.getPort(),request,response);}}//由于我们是 "回显服务器" ,所以响应和请求是一样的,这里直接返回请求即可。 private String process(String request) {return request;}public static void main(String[] args) throws IOException {EchoServer server = new EchoServer(65535);server.start();}}

 





 

 

 

 

UDP Echo Client

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.Scanner;public class EchoClient {private DatagramSocket socket = null;private String severIp;private int serverPort;public EchoClient(String severIp,int serverPort) throws SocketException {this.severIp = severIp;this.serverPort = serverPort;socket = new DatagramSocket();}public void start() throws IOException {Scanner Scanner = new Scanner(System.in);System.out.println("客户端启动!");while (true) {//1.从控制台读取数据System.out.println("请输入:");String request = Scanner.next();//2.构造UDP请求 把数据封装成 DatagramPa 不光要填内容,还要填服务器的地址和端口DatagramPacket reqPacket = new DatagramPacket(request.getBytes(), request.getBytes().length,InetAddress.getByName(severIp), serverPort);socket.send(reqPacket);//3.接收服务器的响应DatagramPacket respPacket = new DatagramPacket(new byte[4096], 4096);socket.receive(respPacket);String response = new String(respPacket.getData(), 0, respPacket.getLength());//4.把响应显示到控制台System.out.println("服务器响应:" + response);}}public static void main(String[] args) throws SocketException, IOException {EchoClient echoClient = new EchoClient("127.0.0.1", 9090);echoClient.start();}   }



 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.TCP流套接字编程

4.1 API介绍

 

 

 

(1)ServerSocket

ServerSocket 是创建TCP服务端Socket的API。

构造方法:ServerSocket(int port)--创建一个服务端流套接字Socket,并绑定到指定端口。

方法:Socket accept()--开始监听指定端口(创建时绑定的端口),有客户端 连接后,返回⼀个服务端Socket对象,并基于该 Socket建立与客户端的连接,否则阻塞等待。

void close()--关闭此套接字

 

 

(2)Socket

Socket 是客户端Socket,或服务端中接收到客户端建立连接(accept方法)的请求后,返回的服 务端Socket。

不管是客户端还是服务端Socket,都是双方建立连接以后,保存的对端信息,及用来与对方收发数据的。

构造方法:Socket(String host,int port)--创建⼀个客户端流套接字Socket,并与对应IP的主机上,对应端口的进程建立连接。

方法:

 

 

 

4.2 代码示例

(1)TCP Echo Server


 

 

 

 

 

(2)TCP Echo Client






 

 

 

 

 

 

 

4.3 长短连接



 

 

 

 

 

4.4 总结

 

 

 

 

 

http://www.dtcms.com/a/614236.html

相关文章:

  • 旅行网站建设方案策划书wordpress一键优化
  • 自己动手写深度学习框架(优化深度学习框架)
  • C语言编译过程五个步骤 | 深入解析编译过程中的关键环节
  • MATLAB基于云-灰关联分析的教学评价研究
  • 网站由谁备案hyip网站开发
  • 太阳能建设网站y2学年做的租房网站
  • 商场BA楼宇自控系统项目案例
  • React Router
  • 自建网站系统兰州最近事件
  • 【计算机算法设计与分析】动态规划与贪心算法教程:从矩阵连乘到资源优化
  • 智能化时代的SEO关键词优化新策略与实践探索
  • 免费外贸建站平台访问网页的流程
  • 宁夏水利厅建设处网站阳信网站建设
  • 传导案例:某3KW 开关电源整改案例分享
  • 针对特定业务场景(如金融交易、日志处理)选择最优的MPSC实现
  • 练习python题目小记(五)
  • 怎么建立网站 个人云速网站建设公司
  • 怎么用自己电脑做网站社区教育网站建设方案
  • 卫星互联网:弥合数字鸿沟的“天基网络“
  • 选择排序的原理及示例
  • 【开题答辩全过程】以 房产网站为例,包含答辩的问题和答案
  • spring Profile
  • 当AI不再等待指令:智能体工作流如何重构商业逻辑
  • 手机网站建设哪儿好wordpress怎么固定导航栏
  • 基于大数据Python豆瓣电影可视化系统 电影数据爬虫 数据清洗+数据可视化 Flask+requests (MySQL+Echarts 源码+文档)✅
  • 自己建设网站怎么挣钱微信小程序推广软件
  • 专门做继电器的网站泉州做网站优化哪家好
  • 信息安全工程师软考精通:第六章物理与环境安全深度解析
  • Spring Data 什么是Spring Data 理解
  • 石家庄做网站需要多少钱黄骅港旅游景点大全