2012-07-06 96 views
1

您好,我寫了一個小型的UDP服務器程序。 我知道代碼顯示的主機IP很容易用下面的代碼:Java:顯示客戶端IP和端口號

System.out.println("Listening Port: " + serverSocket.getLocalPort()); 
System.out.println("IP: " + myIp.getHostAddress()); 

是否有顯示誰是連接到服務器的客戶端的IP地址和端口號的方式嗎?

+2

附註:請閱讀[重要信息](http://meta.stackexchange.com/a/5235/135887)關於您以前的問題。 – Charles 2012-07-06 21:56:01

+0

這是TCP代碼。你確定你的意思是UDP嗎? – EJP 2012-07-07 00:25:03

回答

3

當您收到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()); 
+0

我厭倦了這個String clientip = DatagramPacket.getAddress();但是我得到這個錯誤類型不匹配:無法從InetAddress轉換爲字符串。你能給我一個代碼的例子嗎? – 2012-07-06 22:07:38

+0

請參閱我的編輯 – GETah 2012-07-06 22:19:52

+0

無法對類型爲DatagramPacket的非靜態方法getAddress()進行靜態引用。謝謝你的幫助,但我現在得到了這個錯誤,哈哈 – 2012-07-06 22:23:47

1

有關樣本:String clientip = DatagramPacket.getAddress(); 你爲什麼不只是把它轉換爲String

String clientip = (String) DatagramPacket.getAddress(); 

雖然我現在還沒有Java編譯器。但只是嘗試。會很快回來。