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套接字服务器上的文件_Python_Sockets - Fatal编程技术网

接收python套接字服务器上的文件

接收python套接字服务器上的文件,python,sockets,Python,Sockets,我试图创建一个可以发送和接收数据的python套接字服务器,因此我使用下面的代码在服务器上创建了一个套接字: import socket serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.bind(('', 1208)) serversocket.listen(5) (client,(ip,port)) = serversocket.accept() 然后,我尝试从我的机器创建一个示例连接

我试图创建一个可以发送和接收数据的python套接字服务器,因此我使用下面的代码在服务器上创建了一个套接字:

import socket
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('', 1208))
serversocket.listen(5)
(client,(ip,port)) = serversocket.accept()
然后,我尝试从我的机器创建一个示例连接,方法是转到命令提示符并键入

telnet www.filesendr.com 1208

然而,控制台只是简单地回答“无法打开到主机的连接,在端口1208上…连接失败”。我回顾了我的代码,但无法识别问题。任何帮助都将不胜感激。

我认为问题的一部分在于,在您接受连接后,您不做任何其他事情。一旦执行了accept,就到了脚本的末尾,python将退出并关闭所有打开的文件句柄(包括刚才打开的套接字)。如果您想通过telnet与自己交谈,请尝试以下方式:

import socket
import select
import sys

port = 1208
listener = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
listener.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
listener.bind(('',port))
listener.listen(128)
newSock, addr = listener.accept()
while True:
    r,w,e = select.select([newSock,sys.stdin],[],[])
    if newSock in r:
        data = newSock.recv(4096)
        sys.stdout.write(data)
    if sys.stdin in r:
        newSock.send(sys.stdin.readline())

你知道telnet是如何工作的吗?首先要了解它的使用方法。试试这个
man telnet
,了解它的工作原理,然后编辑你的问题。@GamesBrainiac我试过
man telnet
,但它没有识别出这是一个命令,我在谷歌上搜索时也找不到任何东西。@drfiz98你是在windows机器上吗?你是在使用路由器提供给你的IP,还是你刚刚在现场找到的IP?