网络通信协议随笔

发布时间 2023-11-17 15:57:12作者: 消失的时光
网络通信协议随笔
 
0
 
TCP,UDP协议:
TCP相当于打电话,需要接通才能传递信息,UDP像发短信,不需要先确定连接,可以直接发;
TCP协议发送消息:
1.根据ip地址,访问端口定义socket连接,
2.通过socket连接获取intputStream流,调用输出流write()方法写数据,数据格式为byte[]
Socket socket = new Socket("127.0.0.1",7777);
OutputStream os = socket.getOutputStream;
os.write("TCP客服端发给服务端".getBytes);
 
然后需要再在服务端接收消息
1.根据端口创建服务器serverSocket;
2.等待,等待客户端连接
3.获取输入流
4.创建管道流,创建byte[]类型变量buffer,作为缓冲区存放数据,while循环输入,将bytes数据都传入管道流
5.然后使用管道流输出,将bytes转换成string信息
1.ServerSocket serverSocket = new serverSocket(7777);
2.serverSocket = serverSocket.accept();
3.InputStream is = serverSocket.getInputStream();
4.ByteArrayOutputStream baos = ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while(-1 != (len = is.reader(buffer))){
baos.write(buffer, 0, len);
}
5.System.out.print(baos.toSrting());
 
UDP发送消息
客户端:
1.根据端口创建连接,创建DatagramSocket对象
2.生成byte格式数据
3.创建数据包类,DatagramPacket类,最后一个参数需要使用ip地址,端口(此处的端口是服务器端接收的端口)创建一个socket连接地址的对象
4.传递byte格式数据
1.DatagramSocket socket = new DatagramSocket(8888);
2.datas = "字符串数据".getBytes();
3.DatagramPacket packet = new DatagramPacket(
datas,0,datas.lenth, new InetSocketAddress("localhost", 6666)
);
4.socket.send(packet);
 
服务端:
1.使用端口号定义一个socket接口
2.定义缓冲区,实例化数据包裹,准备接收包裹
3.阻塞式接收包裹
4.包裹获取数据后转换成bytes格式
5.将bytes格式转换成字符串,打印数据
 
1.DatagramSocket socket = new DatagramSocket(6666);
2.byte[] container = new byte[1024];
DatagramPacket packet = new DatagramPacket(container, 0, container.length);
3.socket.receive(packet);
4.byte[] datas = packet.getData();
String receiveData = new String(datas, 0, packet.getLength());
5.System.out.print(receiveData);