我正在實現與套接字的TCP連接,我需要獲取服務器端的客戶端套接字的IP。我已經使用socketName.getRemoteSocketAddress()
這確實返回IP地址後面跟着我使用的端口ID!我怎樣才能得到地址而不是端口?客戶端套接字 - 獲取IP -java
4
A
回答
4
這個返回的SocketAddress
實際上是一個protocol-dependent subclass。對於網絡協議,如TCP在你的情況,你可以將其轉換爲InetSocketAddress
:
InetSocketAddress sockaddr = (InetSocketAddress)socketName.getRemoteSocketAddress();
然後你可以使用的InetSocketAddress
的方法來得到你需要的信息,例如:
InetAddress inaddr = sockaddr.getAddress();
然後,您可以根據地址類型將其轉換爲Inet4Address
或Inet6Address
(如果您不知道,請使用instanceof
查找),例如如果你知道它是IPv4的:
Inet4Address in4addr = (Inet4Address)inaddr;
byte[] ip4bytes = in4addr.getAddress(); // returns byte[4]
String ip4string = in4addr.toString();
或者,更強勁的例子:
SocketAddress socketAddress = socketName.getRemoteSocketAddress();
if (socketAddress instanceof InetSocketAddress) {
InetAddress inetAddress = ((InetSocketAddress)socketAddress).getAddress();
if (inetAddress instanceof Inet4Address)
System.out.println("IPv4: " + inetAddress);
else if (inetAddress instanceof Inet6Address)
System.out.println("IPv6: " + inetAddress);
else
System.err.println("Not an IP address.");
} else {
System.err.println("Not an internet protocol socket.");
}
0
((InetSocketAddress)socketName).getAddress().toString()
將返回類似:/10.255.34.132
包含主機名,你可以,如果你不試試這個不想要主機名:
((InetSocketAddress)socketName).getAddress().toString().split("/")[1]
相關問題
- 1. ServerSocket +客戶端套接字 - 如何獲取客戶端的IP地址?
- 2. 無法通過套接字服務器獲取客戶端IP
- 3. 如何使用套接字編程獲取客戶端IP#
- 4. 如何獲取Tornado Web套接字請求的客戶端IP?
- 5. 如何在Lua套接字中獲取客戶端IP
- 6. Java套接字客戶端/服務器
- 7. java套接字客戶端單連接
- 8. 獲取客戶端IP的客戶端
- 9. Node.js:獲取客戶端IP
- 10. DARTlang獲取客戶端IP
- 11. 使用套接字io java客戶端的套接字io客戶端
- 12. Java多客戶端服務器套接字獲取錯誤
- 13. 如何從Java中的套接字獲取客戶端名稱?
- 14. C套接字服務器,Java套接字客戶端:阻塞!
- 15. 套接字java客戶端服務器
- 16. Java客戶端SSL套接字unknown_ca
- 17. java中的客戶端/套接字 - 客戶端錯誤
- 18. JAVA套接字客戶端到客戶端通信
- 19. 套接字編程客戶端名稱
- 20. lua套接字客戶端
- 21. Asyncrhonous套接字客戶端
- 22. Python套接字客戶端到Java套接字服務器
- 23. 將java套接字客戶端移植到HTML5套接字
- 24. 如何在帶有套接字的Java,TCP/IP服務器/客戶端模型中獲取遠程IP地址?
- 25. 如何獲取用戶的套接字客戶端?
- 26. PHP獲取所有連接的客戶端套接字
- 27. tcp從edittext獲取客戶端的ip
- 28. 可靠地獲取Web客戶端IP
- 29. 無法連接Java套接字服務器和客戶端
- 30. Android中的Java客戶端套接字連接
只需使用您的第一條提示(編輯前)即可完美工作。謝謝! – Rakim