首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OSError:[Errno 107]传输终结点未连接(使用python套接字)

OSError:[Errno 107]传输终结点未连接(使用python套接字)
EN

Stack Overflow用户
提问于 2021-07-22 09:08:40
回答 1查看 75关注 0票数 0

好的,我做了一些研究,显然这与连接中断有关,但是只有在我尝试接收消息时才会发生。我不知道哪里出了问题。

下面是服务器:

代码语言:javascript
复制
#!/usr/bin/python3
import socket
header = '64'
host = '192.168.0.48'
port = 5050
addr = host, port
disconnect = 'GVhdmU='

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


server.bind(addr)
server.listen(10)
print(f'[LISTENING] on {addr}')


while True:
    clientsocket, address = server.accept()
    print(f'[TMP CONNECTION] from {address}')
    msg_test = server.recv(64)
    msg_test = msg_test.decode('utf-8')
    if msg_test == header:
        msg_encode = server.recv(1000000000000000000)
        msg = msg_encode.decode('utf-8')
    elif msg == disconnect:
        clientsocket.close()
    else:
        clientsocket.close()

注意:是的,我知道报头不正确。

下面是客户端:

代码语言:javascript
复制
import socket

host = '192.168.0.48'
port = 5050
addr = host, port

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

client.connect(addr)
print('CONNECTED')

while True:
    msg = input('What do you want to say to the server:')
    header = '64'
    client.send(bytes(header, 'utf-8'))
    client.send(bytes(msg, 'utf-8'))
    disconnect = input('Do you want to end(answer yes or no):')
    if disconnect == no:
        print("we're starting again")
    if disconnect == yes:
        client.send(bytes('bGVhdmU=', 'utf-8'))
        break

注意:这是通过我的网络从一个设备到另一个设备。

EN

回答 1

Stack Overflow用户

发布于 2021-07-22 13:28:51

您的服务器代码正在从错误的套接字读取。

accept()返回clientsocket之后,它需要使用clientsocket而不是server进行读(写)。

因此,将server.recv()更改为clientsocket.recv()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68478031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档