Java Can';t通过Mac OS X上的套接字进行通信
我正在开发一些软件,它由一台机器上的服务器和客户端组成,通过本地套接字进行通信 服务器(用Java编写)在端口9000上打开一个Java.net.ServerSocket,客户端(用Java或Python)必须连接到localhost:9000才能通信 在Windows和Linux中,这可以正常工作。在MacOSX(10.6,Java1.6.0)上,服务器和客户端之间没有通信,即使我没有收到任何错误。我是否需要为Mac编写不同的代码,或者需要更改系统设置以使其正常工作 Python客户端代码段:Java Can';t通过Mac OS X上的套接字进行通信,java,python,macos,networking,sockets,Java,Python,Macos,Networking,Sockets,我正在开发一些软件,它由一台机器上的服务器和客户端组成,通过本地套接字进行通信 服务器(用Java编写)在端口9000上打开一个Java.net.ServerSocket,客户端(用Java或Python)必须连接到localhost:9000才能通信 在Windows和Linux中,这可以正常工作。在MacOSX(10.6,Java1.6.0)上,服务器和客户端之间没有通信,即使我没有收到任何错误。我是否需要为Mac编写不同的代码,或者需要更改系统设置以使其正常工作 Python客户端代码段:
import socket
from re import sub
def main(server_address, port):
'''
Connect to the server.
'''
rclf = '\r\n'
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((server_address,port))
s.send("Version:1.0.0"+rclf)
也许这对某些人会有帮助,因为我在Mac OS上遇到了非常类似的问题,Java客户端无法打开Web服务器的套接字(lighttpd服务静态文件):没有防火墙运行;在Web浏览器和CLI工具中工作(
curl
和wget
);对于不同的非标准自由端口也一样禁用对Web服务器的IPv6支持解决了该问题
我不知道到底发生了什么,但在上述更改之前,Web服务器的访问日志中没有Java客户端请求的条目。而且
80/tcp open PORT
不会出现在nmap localhost
列表中,但是
tcp6 0 0 localhost.PORT *.* LISTEN
出现在netstat-a
列表中
配置:
- Mac OS:10.6
- Java:1.6.0_24,尝试了x86和amd64版本