标签:收信 highlight byte 需要 数据 cvs recv 内容 使用
Socket编程:socket是计算机进程间通信的一种技术。socket包含api、通信的两端的端口和ip、通信的链接。
主要涉及的类:
服务端:
//服务端建立socket的时候要指定端口,但是客户端建立socket的时候不指定端口。
DatagramSocket server = new DatagramSocket(9876);
byte[] recvBuf = new byte[100];
//udp数据包的创建需要指定:要接收活发送的内容所在的数组(缓冲区)、缓冲区的大小、数据包的IP、数据包的端口。
//显然当数据包用来接收的时候不指定数据包的IP、数据包的端口 DatagramPacket recvPacket = new DatagramPacket(recvBuf , recvBuf.length);
//DatagramSocket接收和发送的一定是DatagramPacket对象的实例
server.receive(recvPacket);
String recvStr = new String(recvPacket.getData() , 0 , recvPacket.getLength()); System.out.println("Hello World!" + recvStr);
客户端:
//客户端要发送数据包到服务端,创建socket不需要指定端口
DatagramSocket client = new DatagramSocket(); String sendStr = "Hello! I‘m Client"; byte[] sendBuf; sendBuf = sendStr.getBytes(); InetAddress addr = InetAddress.getByName("127.0.0.1"); int port = 9876;
//数据包的创建,因为是要发送的数据包,所以除了缓冲区内容、缓冲区大小,还要考虑服务端的IP和端口。 DatagramPacket sendPacket = new DatagramPacket(sendBuf ,sendBuf.length , addr , port);
//socket发送的一定是DatagramPacket的实例 client.send(sendPacket);
在这之后:
//在收成功DatagramPacket对象之后的DatagramSocket对象可以通过接受的DatagramPacket实例获取发送者的信息,然后对发送者进行回话。 //在发成功DatagramPacket对象之后DatagarmSocket实力可以直接阻塞接收对方传来的信息。
在UDP编程中,发送、接收信息的时候缓冲区都是用byte数字来表示的,所以编码时候要注意一下。
标签:收信 highlight byte 需要 数据 cvs recv 内容 使用
原文地址:https://www.cnblogs.com/luohaonan/p/9164075.html