我发现这个TCP服务器脚本将数据“回送”回客户端。
#!/usr/bin/env python
import socket
host = ''
port = 50000
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
while 1:
client, address = s.accept()
data = client.recv(size)
if data:
client.send(data)
client.close()
我正在尝试测试&在我能够自己做一些事情并修改之前先了解它,但我遇到了一些问题。当我尝试运行.py脚本时,我的终端中出现以下错误(使用Ubuntu 14.04 LTS)
> Traceback (most recent call last):
File "echo.py", line 14, in <module>
s.bind((host,port))
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
我的Python版本是2.7.6
代码有问题或者我做错了吗?
更新:
情况变得更糟,我使用bind(host, port)
运行的任何脚本都会给我相同的错误。
任何帮助将不胜感激
答案 0 :(得分:2)
也许您不小心在不同的窗口中运行了两次EchoServer?您只能将一个接收器绑定到端口/地址组合。
答案 1 :(得分:0)
似乎在这些端口上运行了一些其他应用程序。
您可以尝试使用以下方法检查是否有其他应用在同一端口上侦听:
netstat -ntlpu | grep 50000
答案 2 :(得分:0)
要绑定服务器,会有些混乱,但是您必须使用元组。正确的方法是server.bind((host, port))