Python中的简单TCP EchoServer

时间:2016-06-02 13:54:18

标签: python sockets tcp

我发现这个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)运行的任何脚本都会给我相同的错误。

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:2)

也许您不小心在不同的窗口中运行了两次EchoServer?您只能将一个接收器绑定到端口/地址组合。

答案 1 :(得分:0)

似乎在这些端口上运行了一些其他应用程序。

您可以尝试使用以下方法检查是否有其他应用在同一端口上侦听:

netstat -ntlpu | grep 50000

答案 2 :(得分:0)

要绑定服务器,会有些混乱,但是您必须使用元组。正确的方法是server.bind((host, port))