我正在實現服務器偵聽網絡中任何活動客戶端的示例。通過數據報套接字進行網絡發現:多播
我正在使用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。 –