首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过Mac上的套接字进行通信

问无法通过Mac上的套接字进行通信
EN

Stack Overflow用户
提问于 2010-07-16 19:15:24
回答 1查看 4.3K关注 0票数 1

我正在开发一些软件,该软件由服务器和客户端组成,它们通过本地套接字进行通信。

服务器(用Java编写)在端口9000上打开一个java.net.ServerSocket,客户机(无论是Java还是Python)必须连接到localhost:9000才能进行通信。

在Windows和Linux中,这很好。在Mac (10.6,Java1.6.0)上,即使没有任何错误,服务器和客户端之间也不会发生通信。我是否需要为Mac编写不同的代码,或者是否需要更改系统设置以使其正常工作?

Python客户端片段:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2011-05-11 15:45:09

这可能会对某些人有帮助,因为我在Mac上遇到了非常相似的问题,因为Java不能为Web服务器打开套接字(lighttpd提供静态文件):没有防火墙运行;在网络浏览器中工作,并使用CLI工具(curl和wget);不同的、非标准的、自由的端口也一样。禁用IPv6对Web服务器的支持解决了此问题。

我不知道发生了什么,但在上述更改之前,Web服务器的访问日志中没有针对Java客户端请求的条目。另外,

代码语言:javascript
复制
80/tcp    open  PORT

不会出现在nmap localhost清单上,尽管

代码语言:javascript
复制
tcp6       0      0  localhost.PORT         *.*                    LISTEN

出现在netstat -a清单上。

配置:

  • Mac OS: 10.6,
  • Java: 1.6.0_24,同时尝试了x86和amd64版本。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3268111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档