TCP服务端实现并发
生活随笔
收集整理的這篇文章主要介紹了
TCP服务端实现并发
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
socket 在 tcp 協(xié)議下通信
客戶端import socket ? # 創(chuàng)建客戶端TCP協(xié)議通信 c = socket.socket() # 與指定服務(wù)端握手 c.connect(('127.0.0.1', 8080)) ? # 通信循環(huán) while True:# 向服務(wù)端發(fā)送信息msg = input('>>>')if len(msg) == 0:continuec.send(msg.encode('utf-8'))# 接受服務(wù)端信息data = c.recv(1024)print(data.decode('utf-8'))
?
普通服務(wù)端import socket ? # 創(chuàng)建服務(wù)端TCP通信 s = socket.socket() # 綁定ip+port s.bind(('127.0.0.1', 8080)) s.listen(5) ? # 連接循環(huán) while True:# 接收用戶端管道和地址conn, addr = s.accept()print(addr)# 通信循環(huán)while True:# 客戶端若異常退出會報錯,try一下try:# 接收客戶端發(fā)送的信息data = conn.recv(1024)if len(data) == 0:break# 在服務(wù)端打印出來print(data.decode('utf-8'))# 轉(zhuǎn)大寫發(fā)給服務(wù)端 conn.send(data.upper())except ConnectionResetError:break# 客戶端退出 服務(wù)端則關(guān)閉連接通道conn.close() 此時服務(wù)端每次只能服務(wù)一個用戶,因為建立連接與接受信息是同一個人在干活,要想建立另外一個連接需要先斷開正在連接的這個用戶 所以實現(xiàn)socket并發(fā)的思路是: 讓建立連接與接受信息分開干活
?
并發(fā)服務(wù)端(線程下的實現(xiàn)方法)import socket from threading import Thread ? # 創(chuàng)建TCP協(xié)議socket通信對象 s = socket.socket() s.bind(('127.0.0.1', 8080)) s.listen(5) ? # 創(chuàng)建循環(huán)通信的子線程 def communication(conn, addr):while True:try:data = conn.recv(1024)print(data.decode('utf-8'))msg = input('>>>:')if len(msg) == 0:continueconn.send(msg.encode('utf-8'))except ConnectionResetError as e:print(e,addr)breakconn.close() ? ? # 創(chuàng)建連接循環(huán) while True:conn, addr = s.accept()# print(conn)print(addr)# 創(chuàng)建子線程,t = Thread(target=communication, args=(conn,addr))t.start()
?
??
轉(zhuǎn)載于:https://www.cnblogs.com/waller/p/11352073.html
總結(jié)
以上是生活随笔為你收集整理的TCP服务端实现并发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 申请办理原产地证需要哪些资料?
- 下一篇: 金庸群侠传的mod怎么安装,安卓版?