日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TCP服务端实现并发

發布時間:2023/12/2 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP服务端实现并发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

socket 在 tcp 協議下通信

客戶端
import socket ? # 創建客戶端TCP協議通信 c = socket.socket() # 與指定服務端握手 c.connect(('127.0.0.1', 8080)) ? # 通信循環 while True:# 向服務端發送信息msg = input('>>>')if len(msg) == 0:continuec.send(msg.encode('utf-8'))# 接受服務端信息data = c.recv(1024)print(data.decode('utf-8'))

?

普通服務端
import socket ? # 創建服務端TCP通信 s = socket.socket() # 綁定ip+port s.bind(('127.0.0.1', 8080)) s.listen(5) ? # 連接循環 while True:# 接收用戶端管道和地址conn, addr = s.accept()print(addr)# 通信循環while True:# 客戶端若異常退出會報錯,try一下try:# 接收客戶端發送的信息data = conn.recv(1024)if len(data) == 0:break# 在服務端打印出來print(data.decode('utf-8'))# 轉大寫發給服務端 conn.send(data.upper())except ConnectionResetError:break# 客戶端退出 服務端則關閉連接通道conn.close() 此時服務端每次只能服務一個用戶,因為建立連接與接受信息是同一個人在干活,要想建立另外一個連接需要先斷開正在連接的這個用戶 所以實現socket并發的思路是: 讓建立連接與接受信息分開干活

?

并發服務端(線程下的實現方法)
import socket from threading import Thread ? # 創建TCP協議socket通信對象 s = socket.socket() s.bind(('127.0.0.1', 8080)) s.listen(5) ? # 創建循環通信的子線程 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() ? ? # 創建連接循環 while True:conn, addr = s.accept()# print(conn)print(addr)# 創建子線程,t = Thread(target=communication, args=(conn,addr))t.start()

?

?

?

轉載于:https://www.cnblogs.com/waller/p/11352073.html

總結

以上是生活随笔為你收集整理的TCP服务端实现并发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。