解决了
解决方案:我尝试使用一个小服务器程序进行连接,它工作得很好。我可以将它连接到10.195.5.53
。我的问题是在我的客户端程序软件中,它没有正确编译。
我有一台 UNIX SunOs 服务器和一台 Linux 客户端。它们连接到同一个网络,我可以同时访问它们。
当我在 UNIX 机器上执行“客户端”程序时,我可以使用本地地址连接它们:127.0.0.1
。但是当我从 Linux 机器上执行该程序时,我无法连接客户端。
这里ifconfig -a
的命令服务器机器:
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
aggr2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 10.195.5.53 netmask ffffff00 broadcast 10.195.5.255
igb2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
inet 190.10.1.95 netmask ffff0000 broadcast 190.10.255.255
我尝试使用我在那里看到的两个地址来连接客户端:10.195.5.53
,190.10.1.95
但没有成功。
编辑:ping 10.195.5.53
从Linux成功连接。
除了 IP 地址之外还应该检查什么或者如何从客户端的角度获取有关服务器的更多信息的任何提示都非常受欢迎。
创建服务器套接字后,我尝试了以下命令:netstat -a | egrep "7777"
。7777 是我在服务器上使用的端口。
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
*.7777 *.* 0 0 49152 0 LISTEN
这个 * 是否意味着它正在监听该端口上的任何 IP?如果正确,那么为什么套接字没有连接。
编辑:我尝试过从 Linux 机器连接到本地主机的程序,但它也没有连接客户端套接字。很可能我的代码有问题。与操作系统有些不兼容。
答案1
是的,这*.7777
意味着它正在监听“所有”接口。尝试arping
从 Linux 机器到 Sun 机器。如果 Sun 机器没有响应,则很可能是两者之间存在硬件问题。
如果您收到回复,请检查:
- 尝试从 Linux 连接时在服务器上运行 tcpdump
- 两个系统上的防火墙
- 所有 NIC 上的 MTU 相同
- 两台主机上的路由均正确
应该会有结果。
答案2
由于它们可以互相 ping 通,因此可能是应用程序配置错误导致不接受外部连接或防火墙阻止传入连接。测试一下:
服务器(先关闭您的应用程序或使用其他端口):
nc -l 7777
客户:
nc server 7777
尝试输入一些内容。如果您可以在服务器的终端上看到它,则说明应用程序配置错误。否则,就是防火墙问题。