我正在实现服务器侦听网络中任何活动客户端的示例。通过数据报套接字进行网络发现:多播
我正在使用Datagram套接字为服务器做组播和客户端来响应服务器。
public void run() {
try {
byte[] recvBuf = new byte[15000];
DatagramPacket packet = new DatagramPacket(recvBuf, recvBuf.length);
DatagramSocket dSock = new DatagramSocket(4445);
dSock.receive(packet);
int byteCount = packet.getLength();
ByteArrayInputStream byteStream = new ByteArrayInputStream(recvBuf);
ObjectInputStream is = new ObjectInputStream(new BufferedInputStream(byteStream));
}
}
,并在客户端:
public void run() {
{
ObjectOutputStream os = null;
try {
InetAddress address = InetAddress.getByName("Server's IP");//Note!
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(15000);
os = new ObjectOutputStream(new BufferedOutputStream(byteStream));
os.flush();
os.flush();
byte[] sendBuf = byteStream.toByteArray();
DatagramPacket packet = new DatagramPacket(sendBuf, sendBuf.length, address, 4445);
int byteCount = packet.getLength();
}
}
}
在上面例如,客户端必须知道服务器的IP先验(硬编码)。我怎样才能修改服务器端的代码,以便服务器将它发送给客户端,并且客户端响应它?
我能够使用套接字来做到这一点,但它可能使用数据报套接字?
谢谢!
@ peterlawrey-你问我从服务器端获取IP并将其作为数据报发送给客户端? –
哦,我明白了!谢谢! –
您的服务器和客户端没有数据报,只有发送者和接收者。接收者可以回复发送它的IP。 –