小编hen*_*ice的帖子

Python socket.send()只能发送一次,然后socket.error:[Errno 32]发生了断管

我是网络编程的新手,所以如果这是一个愚蠢的问题,请原谅我:)我使用Python2.7在Ubuntu 10.04.2上创建了1个客户端和1个SocketServer.ThreadingMixIn服务器,但似乎我只能调用sock .send()一次在客户端,然后我会得到一个:

Traceback (most recent call last):
  File "testClient1.py", line 33, in <module>
    sock.send('c1:{0}'.format(n))   
socket.error: [Errno 32] Broken pipe
Run Code Online (Sandbox Code Playgroud)

这是我写的代码:

testClient1.py:

#! /usr/bin/python2.7
# -*- coding: UTF-8 -*-
import sys,socket,time,threading
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
    sock.connect(('localhost',20000))
except socket.error:
    print('connection error')
    sys.exit(0)
n=0
while n<=1000:
    sock.send('c1:{0}'.format(n))   
    result=sock.recv(1024)
    print(result)
    n+=1
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

testServer.py:

#! /usr/bin/python2.7
# -*- coding: UTF-8 -*-
import threading,SocketServer,time

class requestHandler(SocketServer.StreamRequestHandler):
    #currentUserLogin={} #{clientArr:accountName}
    def handle(self):
        requestForUpdate=self.rfile.read(4)
        print(requestForUpdate)
        self.wfile.write('server reply:{0}'.format(requestForUpdate))

class broadcastServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
    pass

if __name__ == '__main__':

    server=broadcastServer(('localhost',20000),requestHandler)
    t = threading.Thread(target=server.serve_forever)
    t.daemon=True …
Run Code Online (Sandbox Code Playgroud)

python broken-pipe socketserver

11
推荐指数
1
解决办法
3万
查看次数

标签 统计

broken-pipe ×1

python ×1

socketserver ×1