处理客户端线程

时间:2015-07-07 15:23:02

标签: python multithreading networking client-server

我了解到,在客户端服务器网络中,有多个客户端进程在不同的系统中运行,并且在服务器计算机中运行一个服务器进程。当服务器从客户端收到任何连接时,它会为它创建一个新线程并处理客户端。

我正在开发一个项目,其中客户端创建多个线程,服务器也为每个客户端线程创建多个线程。

我无法在这里发布我的项目的源代码,但是我已经在python中编写了一个小型客户端服务器程序,每当我们按任意键时,客户端就会创建一个新线程,服务器应该为它创建一个新线程。

我收到了一些错误,所以我需要帮助。

服务器的代码是

import socket
from threading import Thread

host="10.0.0.5"
port=7000
s=socket.socket()
s.bind((host, port))
s.listen(10)

def server(c, addr, i):
    print("connection successful with "+str(addr))
    while True:
            msg=c.recv(1024)
            if not msg:
                    break
            decoded_msg=msg.decode("utf-8")
            print("CLIENT "+str(i)+" : "+decoded_msg+"\n")

def main():
    i=0
    while i<=10:
            c, addr=s.accept()
            print("triying to recieve a connection")
            t=Thread(target=server, args=(c, addr, i))
            t.start()
            i+=1

main()
c.close()

客户端的代码是

import socket
from threading import Thread
import time

host="10.0.0.5"
port=7000
s=socket.socket()

def client(i):
    s.connect((host, port))
    while True:
            msg="from client "+str(i)
            encoded_msg=bytes(msg, "utf-8")
            s.send(encoded_msg)
            time.sleep(1)

def main():
    i=0
    while True:
            print("connection request sent")
            Thread(target=client, args=(i, )).start()
            i+=1
            if input()=='q':
                    break

main()
s.close()

0 个答案:

没有答案