基于多线程来实现并发的socket套接字

server

import socket
from threading import Thread


def server(conn):
    while True:
        try:
            data=conn.recv(1024)
        except Exception:
            continue
        if data==b'q':
            print('关闭子线程连接')
            break
        conn.send(data.upper())


if __name__ == '__main__':
    soc = socket.socket()
    soc.bind(('127.0.0.1', 8080))
    soc.listen(2)
    while True:
        conn, addr = soc.accept()
        print(f'{addr}已连接')
        t=Thread(target=server,args=(conn,))
        t.start()

client

import socket

soc=socket.socket()

soc.connect(('127.0.0.1',8080))

while True:
    inp=input('请输入')
    data=inp.encode()
    soc.send(data)
    get_data=soc.recv(1024)
    print(get_data)

每当有一个客户端发送请求的时候,服务端就会建立一个连接,因为服务端始终都是卡在 conn, addr = soc.accept()这一步,也就是等待连接建立的这一步,只要有连接他就会继续往下走,然后就完事了,接下来都很简单。

posted @ 2019-09-17 19:17  chanyuli  阅读(227)  评论(0编辑  收藏  举报