服务器端代码(tcp_服务器.py)公司名称:
from SocketServer import TCPServer, ThreadingMixIn, StreamRequestHandler
class Server(ThreadingMixIn, TCPServer):
pass
class Handler(StreamRequestHandler):
def handle(self):
print 'got a connection from: ', self.request.getpeername()
print self.rfile.read(1024)
msg = 'hello'
self.wfile.write(msg)
server = Server(('127.0.0.1', 8888), Handler)
server.serve_forever()
客户端代码(tcp_客户端.py)公司名称:
^{pr2}$我运行了tcp_server.py
,然后tcp_client.py
。tcp_client.py
应该很快就结束了。然而,tcp_client.py
似乎只运行一个线程并被阻塞,tcp_server.py
只得到一个连接。当我打断tcp_client.py
时,tcp_server.py
收到一条消息this is client
我的代码有错误吗?在
这条线:
应该是
^{pr2}$当您使用}。在
do_connection()
时,您将在主线程中执行do_connection
,然后将该调用的返回值传递给Thread
对象。您要做的是将do_connection
函数对象传递给Thread
,这样当您调用t.start
时,Thread
对象可以在新线程中执行{另外,请注意,同时启动100个线程以连接到服务器可能不会很好地执行。您可能需要考虑从更少的线程开始,并且在您知道一切正常运行后,逐步增加到更高的数量。在
由于第一个请求(1024)被第一个尝试读取的服务器阻止 readline在服务器.py并将'\n'添加到从客户端发送的内容中 作品。在
看起来rfile.read文件(1024)将阻止how进程,因此goodway是使用readline 或者使用self.request.recv(1024个)
在服务器.py在
在客户端.py在
^{pr2}$相关问题 更多 >
编程相关推荐