我正在开发一些软件,该软件由服务器和客户端组成,它们通过本地套接字进行通信。
服务器(用Java编写)在端口9000上打开一个java.net.ServerSocket,客户机(无论是Java还是Python)必须连接到localhost:9000才能进行通信。
在Windows和Linux中,这很好。在Mac (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)发布于 2011-05-11 15:45:09
这可能会对某些人有帮助,因为我在Mac上遇到了非常相似的问题,因为Java不能为Web服务器打开套接字(lighttpd提供静态文件):没有防火墙运行;在网络浏览器中工作,并使用CLI工具(curl和wget);不同的、非标准的、自由的端口也一样。禁用IPv6对Web服务器的支持解决了此问题。
我不知道发生了什么,但在上述更改之前,Web服务器的访问日志中没有针对Java客户端请求的条目。另外,
80/tcp open PORT不会出现在nmap localhost清单上,尽管
tcp6 0 0 localhost.PORT *.* LISTEN出现在netstat -a清单上。
配置:
https://stackoverflow.com/questions/3268111
复制相似问题