网络通信协议随笔 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);
标签:网络通信,协议,socket,端口,packet,serverSocket,new,byte,随笔 From: https://www.cnblogs.com/wanyi96/p/17838944.html