socket 错误之:OSError: [WinError 10057] 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

server.py

#!/usr/bin/env python
#coding:utf-8
#Created by Andy @ 2017/9/14


import socket

BUFSIZE = 1024
ip_port = ('127.0.0.1', 9000)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM )
s.bind(ip_port)
s.listen(5)

client, client_addr = s.accept()
print(client, client_addr)

msg = s.recv(BUFSIZE)

print(msg, type(msg))

client.send(msg.upper())

client.close()
s.close()

client.py

#!/usr/bin/env python
#coding:utf-8
#Created by Andy @ 2017/9/14


import socket

BUFSIZE = 1024
ip_port = ('127.0.0.1', 9000)

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

client.connect(ip_port)
client.send('Andy is here'.encode('utf-8'))
feedback = client.recv(BUFSIZE)
print(feedback.decode('utf-8'))
client.close()

 运行后:

可以看到问题出在s.recv(BUFSIZE)

原因就在于这里的s是服务端的套接字,而这样导致的结果是:s没有与client连接,只需要改成:msg = client.recv(BUFSIZE)
再次运行,一切正常。

原文地址:https://www.cnblogs.com/Andy963/p/7521763.html