【发布时间】:2014-11-02 01:22:10
【问题描述】:
这是一个简单的客户端-服务器示例,服务器返回客户端发送的任何内容,但反过来。
服务器:
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(1024)
print('RECEIVED: ' + str(self.data))
self.request.sendall(str(self.data)[::-1].encode('utf-8'))
server = socketserver.TCPServer(('localhost', 9999), MyTCPHandler)
server.serve_forever()
客户:
import socket
import threading
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('localhost',9999))
def readData():
while True:
data = s.recv(1024)
if data:
print('Received: ' + data.decode('utf-8'))
t1 = threading.Thread(target=readData)
t1.start()
def sendData():
while True:
intxt = input()
s.send(intxt.encode('utf-8'))
t2 = threading.Thread(target=sendData)
t2.start()
我从我在 Google 上找到的一个示例中获取了服务器,但客户端是从头开始编写的。这个想法是让客户端可以无限期地从服务器发送和接收数据。
使用客户端发送第一条消息是可行的。但是当我尝试发送第二条消息时,我收到了这个错误:
ConnectionAbortedError: [WinError 10053] 已建立连接 被主机中的软件中止
我做错了什么?
【问题讨论】:
-
@vaultah:我不确定这真的是一个骗局。根本问题是相同的,但其中一个是使用低级别的
socket调用,另一个是TCPServer,所以你知道它是一个重复的唯一方法是如果你已经知道TCPServer是如何工作的。
标签: python sockets python-3.x client-server