您好,我寫了一個小型的UDP服務器程序。 我知道代碼顯示的主機IP很容易用下面的代碼:Java:顯示客戶端IP和端口號
System.out.println("Listening Port: " + serverSocket.getLocalPort());
System.out.println("IP: " + myIp.getHostAddress());
是否有顯示誰是連接到服務器的客戶端的IP地址和端口號的方式嗎?
您好,我寫了一個小型的UDP服務器程序。 我知道代碼顯示的主機IP很容易用下面的代碼:Java:顯示客戶端IP和端口號
System.out.println("Listening Port: " + serverSocket.getLocalPort());
System.out.println("IP: " + myIp.getHostAddress());
是否有顯示誰是連接到服務器的客戶端的IP地址和端口號的方式嗎?
當您收到UDP DatagramPacket
你可以從其中分組最初由DatagramPacket.getAddress()
編輯 遙遠的IP如果你想獲取IP地址的字符串表示,只要使用DatagramPacket.getAddress().toString()
。
例子:
DatagramPacket p = new DatagramPacket(buffer,
buffer.length);
ds.receive(p); // Receive data here...
System.out.println("Received data packet from :"+p.getAddress().toString());
我厭倦了這個String clientip = DatagramPacket.getAddress();但是我得到這個錯誤類型不匹配:無法從InetAddress轉換爲字符串。你能給我一個代碼的例子嗎? – 2012-07-06 22:07:38
請參閱我的編輯 – GETah 2012-07-06 22:19:52
無法對類型爲DatagramPacket的非靜態方法getAddress()進行靜態引用。謝謝你的幫助,但我現在得到了這個錯誤,哈哈 – 2012-07-06 22:23:47
有關樣本:String clientip = DatagramPacket.getAddress();
你爲什麼不只是把它轉換爲String
。
String clientip = (String) DatagramPacket.getAddress();
雖然我現在還沒有Java編譯器。但只是嘗試。會很快回來。
附註:請閱讀[重要信息](http://meta.stackexchange.com/a/5235/135887)關於您以前的問題。 – Charles 2012-07-06 21:56:01
這是TCP代碼。你確定你的意思是UDP嗎? – EJP 2012-07-07 00:25:03