无法在Mac OS X上通过socket通信
我正在开发一个软件,这个软件包含一个服务器和多个客户端,它们都在同一台机器上通过本地套接字进行通信。
服务器是用Java写的,它在9000端口上打开了一个java.net.ServerSocket,而客户端(可以是Java或Python写的)需要连接到localhost:9000来进行通信。
在Windows和Linux系统上,这一切都运行得很好。但是在Mac OS X(10.6,Java 1.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)
1 个回答
0
也许这对某些人会有帮助,因为我在Mac OS上遇到了类似的问题:Java客户端无法为Web服务器(lighttpd提供静态文件)打开套接字。没有防火墙在运行;在网页浏览器和命令行工具(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版本。