在Python中使用套接字:仅在使用IDLE时才能正确运行。在CMD中无法正常运行

时间:2013-10-09 21:09:38

标签: python sockets python-2.7 windows-7-x64

我正在尝试执行一个简单的套接字通信脚本,并在尝试使用命令提示符运行脚本时遇到一些困难。我使用的是Windows 7 64位和Python 2.7.5 AMD 64.

当我使用IDLE执行它时,脚本运行正常,但是当使用命令提示符时,它只是坐在那里歪着它的拇指。

以下是我用来尝试解决问题的代码:

from socket import *

print "Hello World"
tcp_ip = '192.168.1.241'
tcp_port = 2001    
buffer_size = 11
plc_socket = socket(AF_INET, SOCK_STREAM)
plc_socket.bind((tcp_ip, tcp_port))        
plc_socket.listen(1)       
socket_conn, socket_addr = plc_socket.accept()
print "Connection Accepted"
socket_conn.shutdown(1)             
plc_socket.close()

当我使用命令行运行代码时,我会得到“Hello World”,它会在SOCKET_CONN,SOCKET_ADDR行之前执行所有操作,然后就在那里。

我已经完成了以下工作:

  1. 将我的Windows路径信息设置为指向Python安装目录。
  2. 卸载了我机器上的任何其他Python版本。
  3. 在其他计算机(相同版本)上尝试脚本以查看它是否有效。 (确实如此)
  4. 已验证我是从命令行运行正确版本的Python。
  5. 困惑地抓了我的脑袋。
  6. 对此事的任何智慧都将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题已经解决了。

事实证明,当脚本由命令行运行或直接执行时,本地网络防火墙阻止了TCP / IP连接。

我关闭了防火墙,脚本运行得很好。