1
所以我嘗試創建一個簡單的服務器客戶端應用程序。服務器客戶端簡單程序
我有服務器,哪些多播消息給訂閱的客戶端。
客戶可以明顯地訂閱或取消訂閱。
這裏是插座
try // create DatagramSocket for sending and receiving packets
{
socket = new DatagramSocket(6666);
} // end try
catch (SocketException socketException)
{
System.exit(1);
} // end catch
服務器端的代碼,我也創建了等待進入的口袋
while(true)
{
try // receive packet, display contents, return copy to client
{
byte[] data = new byte[ 100 ]; // set up packet
DatagramPacket receivePacket =
new DatagramPacket(data, data.length);
socket.receive(receivePacket); // wait to receive packet
String Message = receivePacket.getData().toString();
.........
這裏一個線程客戶端
try {
socket = new DatagramSocket();
} catch (SocketException ex) {
displayArea.append(ex + "\n");
}
我在這裏嘗試發送數據包
byte[] data = message.getBytes(); // convert to bytes
try {
// create sendPacket
DatagramPacket sendPacket = new DatagramPacket(data,
data.length, InetAddress.getLocalHost(), 6666);
} catch (UnknownHostException ex) {
displayArea.append(ex + "\n");
}
嗯,問題是我不認爲數據包到達服務器,我知道線程正在等待數據包,我可以在調試中看到它確實到達了socket.receive
部分,但是沒有任何反應。
我在同一臺計算機上使用客戶端和服務器。
任何想法我做錯了什麼?
謝謝。
我會使用數據包嗅探器來查看數據包是否在您的盒子上收到。 Wireshark,tcpdump等。 – Gray
小心:Windows上的Wireshark無法觀察環回 – Aubin