簡單的soket例子 |
Python 2.0 客戶端服務端傳輸
1.可發字符串,可發字節 bys類型
Python 3.0 客戶端服務端傳輸
1.只能發bys,比特流的類型。
2.bys類型只能接收 ASCLL碼里的數據類型。
3.如果想傳入中文:
簡單的soket鏈接例子
需求:服務端幫客戶端處理字符串信息為大寫
客戶端
#客戶端 import socket #聲明協議類型,同事生成socket連接對象 client = socket.socket() #鏈接地址和端口,元組(本地,端口) client.connect(('localhost',6969)) #發送數據 b將字符串轉為bys類型 client.send(b"Hello World!") #接收服務器端的返回,需要聲明收多少,默認1024字節 data = client.recv(1024) #打印data是recv的data print("recv:",data) #關閉接口 client.close()
#結果 #recv: b'HELLO WORLD!'
服務端
#服務端 import socket #聲明類型,生成socket鏈接對象 server = socket.socket() #監聽接收端口元組(本地,端口),綁定要監聽的端口 server.bind(('localhost',6969)) #監聽 server.listen() print("我要開始等待客戶端了") #1.等待客戶端 #會返回鏈接的標記位conn,與連接的地址 #2.客戶端同過conn,addr進行通話 #3.conn就是客戶端連接過來而在服務器端為其生成的一個連接實例 conn,addr = server.accept() #查看標記位與IP地址 print(conn,addr) print("客戶端 他 進來了!") #接收數據 data = conn.recv(1024) print("recv:",data) #返回一個值,處理變為大寫 conn.send(data.upper()) #關閉鏈接 server.close() #結果 #我要開始等待客戶端了 # <socket.socket fd=336, family=AddressFamily.AF_INET, # type=SocketKind.SOCK_STREAM, proto=0, # laddr=('127.0.0.1', 6969), # raddr=('127.0.0.1', 55652)> ('127.0.0.1', 55652) #客戶端 他 進來了! #recv: b'Hello World!'
注:客戶端操作
(1)傳送時“ .encode("utf-8") ”轉成ASCLL碼(發不了空)。
(2) 返回時" .decode() "UTF-8轉成 Unicode。