python tcp多客户端

tcp_server

from socket import *
import threading
address='127.0.0.1'     #监听哪些网络  127.0.0.1是监听本机 0.0.0.0是监听整个网络
port=9999             #监听自己的哪个端口
buffsize=1024          #接收从客户端发来的数据的缓存区大小
s = socket(AF_INET, SOCK_STREAM)
s.bind((address,port))
s.listen(2)     #最大连接数

def tcplink(sock,addr):
    while True:
        recvdata=sock.recv(buffsize).decode('utf-8')
        if recvdata=='exit' or not recvdata:
            print(f"{addr} have leaved")
            break
        print(f"from {addr} revive {recvdata}")
        senddata=recvdata+'from sever'
        sock.send(senddata.encode())
    sock.close()

while True:
    clientsock,clientaddress=s.accept()
    print('connect from:',clientaddress)
#传输数据都利用clientsock,和s无关
    t=threading.Thread(target=tcplink,args=(clientsock,clientaddress))  #t为新创建的线程
    t.start()
s.close()

tcp_client

#!/usr/bin/python3
# -*-coding:utf-8 -*-
from socket import *
from time import ctime
HOST = '127.0.0.1' #服务端ip
PORT = 9999 #服务端端口号
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM) #创建socket对象
tcpCliSock.connect(ADDR) #连接服务器
while True:
    data = input('>>').strip()
    if not data:
        break
    tcpCliSock.send(data.encode('utf-8')) #发送消息
    data = tcpCliSock.recv(BUFSIZ) #读取消息
    if not data:
        break
    print(data.decode('utf-8'))
tcpCliSock.close() #关闭客户端

现在先运行一个server,然后运行多个client,一个server同时可以接受多个客户端了

connect from: ('127.0.0.1', 56683)
connect from: ('127.0.0.1', 56687)
connect from: ('127.0.0.1', 56688)
from ('127.0.0.1', 56683) revive client 1
from ('127.0.0.1', 56687) revive client 2
from ('127.0.0.1', 56688) revive client 3
('127.0.0.1', 56688) have leaved
('127.0.0.1', 56687) have leaved
('127.0.0.1', 56683) have leaved

 

posted @ 2020-03-14 16:15  腹肌猿  阅读(832)  评论(0编辑  收藏  举报