【发布时间】:2011-05-18 18:15:23
【问题描述】:
大家好 我正在尝试了解有关套接字以及如何使用它们的更多信息,但我已经被困在一个问题上一段时间了。
我从 Beej 的网络编程指南开始,并在我正在使用的 linux (Fedora 14) 机器上从 this page 制作了谈话者和听众。它有效,我可以让它互相交谈。
然后我继续使用 Windows (7) 并使用 this 教程并启动并运行它,并且可以在 Windows 机器上向自己发送消息。我真正拥有的唯一变化是我使用的是 getHostbyAddr 而不是名称。
当我将两者粘合在一起时,我开始遇到问题,或者说现在是一个问题。我在 linux 机器上运行 Beej 的监听器,我尝试让 Johnnie 的客户端向它发送消息。我在 Windows 机器上收到了一个 winsock 错误 10061,并且在 linux 上什么也没有出现(不足为奇)。我已经用 linux 上的防火墙对此进行了测试,但仍然出现该错误。
我能做些什么来解决这个问题?
谢谢
已编辑以添加更多信息:
当我运行 tcpdump 时,我得到了这个
[root@localhost ~]# tcpdump tcp port 4950
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:08:56.246753 IP TLARGE.WIFI.schoolname.EDU.62394 > hmd46.cs.schoolname.edu.sybasesrvmon: Flags [S], seq 150153995, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
12:08:56.246794 IP hmd46.cs.schoolname.edu.sybasesrvmon > TLARGE.WIFI.schoolname.EDU.62394: Flags [R.], seq 0, ack 150153996, win 0, length 0
12:08:56.746170 IP TLARGE.WIFI.schoolname.EDU.62394 > hmd46.cs.schoolname.edu.sybasesrvmon: Flags [S], seq 150153995, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
12:08:56.746221 IP hmd46.cs.schoolname.edu.sybasesrvmon > TLARGE.WIFI.schoolname.EDU.62394: Flags [R.], seq 0, ack 1, win 0, length 0
12:08:57.246138 IP TLARGE.WIFI.schoolname.EDU.62394 > hmd46.cs.schoolname.edu.sybasesrvmon: Flags [S], seq 150153995, win 8192, options [mss 1460,nop,nop,sackOK], length 0
12:08:57.246185 IP hmd46.cs.schoolname.edu.sybasesrvmon > TONJELARGE.WIFI.schoolname.EDU.62394: Flags [R.], seq 0, ack 1, win 0, length 0
^C
6 packets captured
6 packets received by filter
0 packets dropped by kernel
运行 netstat 给了我这个:
[root@localhost ~]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:58661 0.0.0.0:* LISTEN 1083/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1013/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1265/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1148/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1554/sendmail: acce
tcp 0 0 :::56315 :::* LISTEN 1083/rpc.statd
tcp 0 0 :::111 :::* LISTEN 1013/rpcbind
tcp 0 0 :::22 :::* LISTEN 1265/sshd
tcp 0 0 ::1:631 :::* LISTEN 1148/cupsd
这两个都来自linux机器
【问题讨论】:
-
您使用哪些端口?您确定防火墙没有在 Linux 端阻止?
-
我使用的是 4950(只是基于 Beej 代码中的内容。)我只是关闭了防火墙并再次尝试,然后得到了同样的错误(使用 / etc/init.d/iptables 保存/停止命令)。