我试图创建一个可以发送和接收数据的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上...连接失败。"我回过头来看了我的代码,但无法确定问题。任何帮助将不胜感激。
答案 0 :(得分:0)
我认为部分问题在于,在您接受连接后,您不会做任何其他事情。一旦接受发生,你到达脚本的末尾,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())