我遇到类似Client1向client2发送数据的情况,并从那里将数据发送到Server.Now从服务器将数据发送到其他多个客户端。
所以,现在当Client1连接到client2并发送一些之后 如果client1断开如何知道client1的数据,则返回数据 在client2中断开连接?
我的Client1代码段是:
InetAddress address = InetAddress.getByName(ipAddress);
MulticastSocket socket = new MulticastSocket(port);
socket.joinGroup(address);//join a Multicast group and send the group salutations
byte[] data;
System.out.print("Enter data: ");
String str = (br.readLine());
DatagramPacket packet;
//send the packet
data = new byte[1024];
data = str.getBytes();
packet = new DatagramPacket(data,str.length(),address,port);
socket.send(packet);
我的Client2代码段是:
InetAddress address = InetAddress.getByName(ipAddress);
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data,data.length);
MulticastSocket socket = new MulticastSocket(port);
socket.joinGroup(address);//join a Multicast group and send the group salutations
// receive the packets
socket.receive(packet);
str = new String(packet.getData(),0,packet.getLength());
System.out.println(ipname+" with portnumber "+port + " sent : "+str);
现在,如果client1连接到client2并且一段时间后它断开了如何知道client1在client2中断开连接的方式?
我已经使用了isConnected(), isbound(), isClosed()
和isReachable(int timeout)
方法。但他们都没有帮助我。
答案 0 :(得分:2)
数据报包用于实现无连接数据包 送货服务。
无连接协议没有可以关闭的连接。如果您在UDP / DatagramPacket之上构建自己的协议,请将其作为协议的一部分来“关闭”会话。