【问题标题】:JAVA vs Python Socket defaultsJAVA 与 Python 套接字默认值
【发布时间】: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


【解决方案1】:

我最近在 Windows 7 上的套接字绑定和多个 NIC 方面遇到了很多困难。

我通常是一个 unix 人,但我不得不为朋友做一些 C#.Net 的工作..

我的问题是我无法将套接字绑定到客户端的特定端口和 ip。解决方案是增加我想要绑定的 NIC 的“绑定优先级”。我对Windows不太了解,所以我无法详细说明。阅读这篇文章了解一些信息,它对我有帮助:Network adapter card priority binding order in windows 7

不确定您是否遇到同样的问题,因为套接字错误 10013 似乎与权限相关。谷歌给了我这个:dealing with socket error 10013

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 2016-11-21
    • 2021-07-27
    • 1970-01-01
    相关资源
    最近更新 更多