首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python网络编程入门

Python网络编程入门
EN

Stack Overflow用户
提问于 2014-03-31 19:34:48
回答 1查看 902关注 0票数 1

我是Python的新手,甚至是网络编程的新手。我从docs.python.org中的这个例子开始:

服务器:

代码语言:javascript
复制
# Echo server program
import socket

HOST = ''                 # Symbolic name meaning all available interfaces
PORT = 50007              # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(1024)
    if not data: break
    conn.sendall(data)
conn.close()

客户端:

代码语言:javascript
复制
# Echo client program
import socket

HOST = 'localhost'        # The remote host
PORT = 50007              # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall('Hello, world')
data = s.recv(1024)
s.close()
print 'Received', repr(data)

原始代码列出了一些其他地址作为主机,我已将其更改为localhost。当我第一次运行这些程序时,它们被防火墙阻止了,但我让它做了一个例外,从那以后这就不是问题了。

然而,这两个程序都不起作用。服务器程序收到以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Users\Python\echoclient.py", line 7, in <module>
    s.connect((HOST, PORT))
  File "C:\Python27\lib\socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 10061] Det gick inte att göra en anslutning eftersom måldatorn aktivt nekade det

(“无法建立连接,因为目标计算机主动拒绝”)

客户端程序收到以下错误:

代码语言:javascript
复制
Traceback (most recent call last
File "C:\Users\Python\echoclient.py", line 9, in <module> data = s.recv(1024)
error: [Errno 10054] En befintlig anslutning tvingades att stänga av fjärrvärddatorn

(“现有连接被远程主机强制关闭”)

我使用的是Python 2.7.6。我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2014-03-31 19:46:14

这里已经提出了问题:Errno 10061 in python, I don't know what do to

当您在windows上遇到网络连接问题时,请检查Errno number以了解情况。

在您的示例中,由于您在本地主机上运行应用程序,因此可能存在阻止服务器脚本与机器上的端口绑定的防火墙规则。

要检查应用程序是否正在侦听:

在windows上,打开命令提示符(以管理员身份运行):

代码语言:javascript
复制
netstat -ban | findstr "50007"

在Linux上:

代码语言:javascript
复制
netstat -ltnp | grep 50007 

=>如果您没有看到任何返回的内容,则表示没有任何内容在此端口上侦听。

=>如果你看到了什么,检查它是你的应用程序。

如果是这样的话,检查你的防火墙规则,杀毒软件(如果你正在进行故障排除并且它是一台测试机,最好禁用所有秒)

在windows上,转到防火墙设置

在Linux上,以超级用户身份使用iptables -L -n (或sudo)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22760511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档