【发布时间】:2012-10-03 20:39:33
【问题描述】:
我很确定我的根本问题是由我们的网络管理的防病毒应用程序,但是我用 Python 编写的一个基本套接字客户端直到不久前还在工作,现在给我“套接字错误 10013”。我在 JAVA 中也有 SocketTest 应用程序。 SocketTest 有效,但我未能成功让 Python 连接。 WIN 7 PC 有两个网卡,没有桥接。我已经打开和关闭了防火墙。如果我禁用与公司 LAN 的连接,那么 Python 客户端会很高兴。重申一下,这种配置工作了几个月。 我找不到区别。下面是示例代码:
Python
MY_IP = '192.168.100.2'
MY_PORT = 62828
ROBOT_IP = "192.168.100.10"
ROBOT_SOCK = 29999
robotSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
robotSocket.bind((MY_IP, MY_PORT)) # Tried without binding
robotSocket.connect((ROBOT_IP, ROBOT_SOCK))
结果“套接字错误 10013”
JAVA:
socket = new Socket(ROBOT_IP, ROBOT_SOCK);
is = socket.getInputStream();
in = new BufferedInputStream(is);
while (!desonnected)
{
try
{
String got = readInputStream(in); // in.readLine();
这很好用,但我找不到调整 Python 代码的区别。我确定是防毒墙网络版,但是....
编辑
我按照建议运行了 WireShark。启用两个网卡后,不会发送 Python 连接请求。 禁用公司局域网后,我比较了 JAVA 客户端和 Python 客户端之间的连接请求,它们包含相同的数据,当然除了本地端口。
【问题讨论】:
-
大多数防火墙工具可以允许一个程序但不允许另一个程序访问网络。很可能是设置您的代码是否可以正常工作。
-
Wireshark 可以拯救你。观察请求,响应。你必须这样做。没有替代。现在做或以后做。 Wireshark [或任何类似工具:|]
-
可能值得检查机器的IP地址确实等于
MY_IP -
那么当您只使用 1 个 NIC 时您的代码就可以工作了吗?
-
是的,当禁用公司 NIC 时,代码再次正常工作。我放弃了摆弄它,正在用 JAVA 完成重写。
标签: java sockets python-2.7