【问题标题】:Receiving files python socket server接收文件python套接字服务器
【发布时间】:2014-12-05 03:54:15
【问题描述】:

我试图创建一个可以发送和接收数据的 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 上打开与主机的连接...连接失败。”我回顾了我的代码,但无法确定问题所在。任何帮助将不胜感激。

【问题讨论】:

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

标签: python sockets


【解决方案1】:

我认为问题的一部分在于,在您接受连接后,您没有做任何其他事情。一旦接受发生,您将到达脚本的末尾,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())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 2021-03-21
    • 2013-04-04
    • 2017-04-30
    相关资源
    最近更新 更多