是端口6666引起的问题。如下面代码所示- import java.net.InetAddress;
- import java.net.DatagramSocket;
- import java.net.DatagramPacket;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- class UdpSend2
- {
- //1.本来你这里6666是没有问题的,还是可以运行,前提是多台电脑分别充当发送端。这个6666这个端口被你开启,一个电脑(只有一个ip地址)开了多个控制台,也就是说被你开启多个6666端口,这是不能被允许的,因为一个端口在同一时间在同一台电脑被开启一个。所以你不能开启多个发送端的原因是因为不能开启多个6666端口,把6666去掉就没问题了
- public static void main(String[] args) throws Exception
- {
- DatagramSocket ds = new DatagramSocket(6666);
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- String line = null;
- while((line = br.readLine()) != null)
- {
- if("886".equals(line))
- break;
- byte[] by = line.getBytes();
- DatagramPacket dp = new DatagramPacket(by, by.length, InetAddress.getByName("192.168.1.255"), 10001);
- ds.send(dp);
- }
- ds.close();
- }
- }
- import java.net.DatagramSocket;
- import java.net.DatagramPacket;
- class UdpReceive2
- {
- public static void main(String[] args) throws Exception
- {
- DatagramSocket ds = new DatagramSocket(10001);
- while(true)
- {
- byte[] b = new byte[1024];
- DatagramPacket dp = new DatagramPacket(b, b.length);
- ds.receive(dp);
- String ip = dp.getAddress().getHostAddress();
- String data = new String(dp.getData(), 0, dp.getLength());
- int port = dp.getPort();
- System.out.println(ip + " " + data + " " + port);
- }
- }
- }
复制代码
|