_UDP通信程序联系
-
按照下面的要求实现程序:
- UDP发送数据:数据来自于键盘,直到输入的数据是886,发送数据结束
- UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采取死循环接收
-
package demo22; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; public class Send_Demo { public static void main(String[] args) { /* UDP发送数据:数据来自于键盘,知道输入的数据是886,发送数据结束 */ // DatagramSocket建立发送点 BufferedReader br = null; try { DatagramSocket ds = new DatagramSocket(); // 键盘录入发送数据 // 此处的字节缓冲流只能用InputStreamRead,不能使用其子类FileRead br = new BufferedReader(new InputStreamReader(System.in)); String line; while ((line = br.readLine()) != null) { if ("886".equals(line)) { break; } // 创建数据,比把数据打包 // 将输入的数据编码成比特字符进行传输 byte[] bytes = line.getBytes(); // 调用DatagramPacket将数据打包 /* public DatagramPacket(byte[] buf, int length, InetAddress address, int port) 构造用于发送长度的分组的数据报包length指定主机上到指定的端口号。 length参数必须小于或等于buf.length 。 */ // 获取目的地的IP地址 InetAddress inetAddress = InetAddress.getByName("192.168.10.3"); DatagramPacket dp = new DatagramPacket(bytes, bytes.length, inetAddress, 11111); // 发送数据 ds.send(dp); } // 关闭发送端 ds.close(); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } ==========================