多线程C/S交互

妈的,代码这玩意就他妈是不写就忘,前两天刚看的,今天写就磕磕绊绊的

服务端

from socket import *
from threading import Thread, current_thread
import time
def worker(client_sock):
    try:
        while True:
            recv_data = client_sock.recv(1024)
            print('[{}]: {} {}'.format(time.strftime("%Y-%m-%d %H:%M:%S"), current_thread().name, recv_data))
            if len(recv_data) <= 0:
                break
            if recv_data.decode() == 'hi':
                client_sock.send('hello!'.encode())
            else:
                client_sock.send('say hi.'.encode())
    finally:
        client_sock.close()


def main():
    try:
        server_socket = socket(AF_INET, SOCK_STREAM)
        host_port = ('127.0.0.1', 7788)
        server_socket.bind(host_port)
        server_socket.listen(5)
        print('Start listen...')
        while True:
            client_socket, client_addr = server_socket.accept()
            t = Thread(target=worker, args=(client_socket,))
            t.start()
    finally:
        server_socket.close()

if __name__ == '__main__':
    main()

客户端

root@iZ947mgy3c5Z:/prodata/scripts# cat multi_thread_client.py 
from socket import *
from multiprocessing import Pool, current_process
from threading import Thread, current_thread
import time

host_port = ('127.0.0.1', 7788)
def worker():
    try:
        client_socket = socket(AF_INET, SOCK_STREAM)
        client_socket.connect(host_port)
        while True:
            time.sleep(1)
            client_socket.send('hi'.encode())

            print('[{}]: {}'.format(time.strftime("%Y-%m-%d %H:%M:%S"), current_thread().name))
    finally:
       client_socket.close()

def main():
    t1 = Thread(target=worker, name="t1")
    t2 = Thread(target=worker, name="t2")
    t3 = Thread(target=worker, name="t3")
    t4 = Thread(target=worker, name="t4")
    t1.start()
    t2.start()
    t3.start()
    t4.start()


if __name__ == '__main__':
    main()

results matching ""

    No results matching ""