註意 socket通信預設的情況下是屬於阻塞形式通信,在recv與accept函數會進行阻塞 1.客戶端正常退出的情況下,server端的con的通道會正常的關閉,recv直接賦值為空 2.在windows下,使用pycharm的強制終端客戶端,會造成,con通道的破壞,造成伺服器端的異常(可以通過 ...
註意 socket通信預設的情況下是屬於阻塞形式通信,在recv與accept函數會進行阻塞
1.客戶端正常退出的情況下,server端的con的通道會正常的關閉,recv直接賦值為空
2.在windows下,使用pycharm的強制終端客戶端,會造成,con通道的破壞,造成伺服器端的異常(可以通過捕獲異常來避免),在linux程式端,不會出現該問題
3.在發送數據的時候,send為空的情況下,在recv下,預設就是不處理,還處在阻塞的狀態。 因此規定不能發送為空
4.socket通信的在py3裡面,只能發送bytes類型 str-->bytes: bytes(str,"utf-8")
bytes-->str:str(bytes"utf-8")
1.基礎代碼
server端:
import socket server = socket.socket() server.bind(("127.0.0.1",6969)) server.listen() con,addr=server.accept() while True: data=con.recv(1024) data_uper=str(data,"utf-8").upper() con.send(bytes(data_uper,"utf-8"))View Code
client端
import socket client = socket.socket() client.connect(('127.0.0.1',6969)) x=input(">>:") client.send(bytes("good 你好",encoding="utf-8")) data=client.recv(1024) print(str(data,"utf-8"))View Code