Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的简单TCP EchoServer_Python_Sockets_Tcp - Fatal编程技术网

Python中的简单TCP EchoServer

Python中的简单TCP EchoServer,python,sockets,tcp,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.acce

我找到了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)

>回溯(最近一次呼叫最后一次):
文件“echo.py”,第14行,在
s、 绑定((主机、端口))
文件“/usr/lib/python2.7/socket.py”,第224行,meth格式
返回getattr(self.\u sock,name)(*args)
socket.error:[Errno 98]地址已在使用中
我的Python版本是2.7.6

代码有问题吗?还是我做错了

更新:

更糟糕的是,我使用
bind(主机、端口)
运行的任何脚本都会给我同样的错误


任何帮助都将不胜感激

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

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

这些端口上似乎运行着其他应用程序

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

netstat -ntlpu | grep 50000

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

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

netstat -ntlpu | grep 50000


绑定服务器有点混乱,但必须使用元组。正确的方法是
server.bind((主机,端口))

绑定服务器有点混乱,但必须使用元组。正确的方法是
server.bind((主机,端口))

尝试为
port
@AlexHall使用不同的值,这也是我的第一个猜测,我尝试了10个不同的值,但错误仍然是相同的,使用不同的值作为
port
@AlexHall也是我的第一个猜测,我尝试了10种不同的方法,但错误仍然是一样的。这给了我一个想法,我没有这样做,但我可能已经这样做了,意思是:当我第一次启动终端并运行脚本时,没有发生任何事情,真的。因此,我通过
Crtl+Z
终止了该进程,并再次运行了脚本,它成功了(给了我错误)是否可能第一次运行导致的进程仍在运行?我不知道,问题是,无论我等待多久,当我第一次在终端上运行脚本时,什么都不会发生。在Linux系统上,ctrl-z将把进程推到后台。所以它可能还在运行。检查ps命令。是的,它仍在运行。。。我现在明白了,这部分问题解决了,谢谢!但是,我仍然不能运行脚本,它只是挂起,你知道吗?挂起了吗?该脚本将进入一个永久循环,将数据回显到客户端。它不会在服务器屏幕上打印任何内容,只回复客户端。启动服务器运行,然后打开另一个终端并执行“telnet 127.0.0.1 50000”,然后您将连接到服务器。这让我想到,我并没有这么做,但我可能已经这么做了,意思是:当我第一次启动终端并运行脚本时,什么都没有发生,真的。因此,我通过
Crtl+Z
终止了该进程,并再次运行了脚本,它成功了(给了我错误)是否可能第一次运行导致的进程仍在运行?我不知道,问题是,无论我等待多久,当我第一次在终端上运行脚本时,什么都不会发生。在Linux系统上,ctrl-z将把进程推到后台。所以它可能还在运行。检查ps命令。是的,它仍在运行。。。我现在明白了,这部分问题解决了,谢谢!但是,我仍然不能运行脚本,它只是挂起,你知道吗?挂起了吗?该脚本将进入一个永久循环,将数据回显到客户端。它不会在服务器屏幕上打印任何内容,只回复客户端。启动服务器运行,然后打开另一个终端并执行“telnet 127.0.0.1 50000”,然后您将连接到服务器。无论您键入什么,都会向您发出回声。
(并非所有进程都可以识别,非自有进程信息不会显示,您必须是root才能查看所有进程。)tcp 0.0.0.0:50000 0.0.0:*LISTEN 6735/python
这是输出。请尝试检查哪个进程是PID 6735,如果您没有root访问权限,为什么不从sysadmin获得帮助并检查它是什么进程。
(并非所有进程都可以识别,非所有进程信息不会显示,您必须是root才能查看所有进程。)tcp 0.0.0.0:50000 0.0.0.0:*听6735/python
这是输出。尝试检查哪个进程是PID 6735,如果您没有根访问权限,为什么不从sysadmin获得帮助并检查它是哪个进程。