<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
import socket # 建立socket物件 # 引數一表示IP地址型別(AF_INET為IPV4,AF_INET6為IPV6),引數二表示連線的型別(SOCK_STREAM表示TCP形式,SOCK_DGRAM表示UDP形式) client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 代表(ipv4,TCP) # 連線伺服器(元組中填目標ip地址和埠號) client_socket.connect(('127.0.0.1',7777)) # 準備資料,需要轉換為二進位制資料,encode()中填寫的是原生的字串編碼格式,mac、linux填utf-8 data='hello'.encode('gbk') # 向伺服器傳送資料 client_socket.send(data) # 接收資料,必須要指定接收資料的大小,單位位元組,最大4096,即4k recv_data=client_socket.recv(1024) # 接收的資料要進行decode()解碼,傳送的時候用啥編碼就填啥編碼 recv_data=recv_data.decode('gbk') print(recv_data) # 關閉連線 client_socket.close()
import socket # 建立socket物件 server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 如果伺服器是一次性的,如果伺服器結束後馬上重新啟動會出現一個錯誤,原因是地址和埠沒有被釋放 # OSError: [Errno 48] Address already in use # 如果想馬上釋放,要設定一下socket選項 server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True) # 繫結IP和埠,如果在繫結IP時沒有給定IP,預設是繫結本地IP server_socket.bind(('',7777)) # 設定監聽(最大監聽數),設定完後伺服器端會進入被動模式,不能主動連線使用者端,只能被動地等待使用者端的連線 server_socket.listen(128) # 等待使用者端連線,連線上後,函數會返回使用者端的Socket物件和地址資訊 client_socket,ip_port=server_socket.accept() print(f'使用者端{ip_port[0]}使用埠{ip_port[1]}連線成功...') # 接收使用者端資料 data=client_socket.recv(1024) # 檢視使用者端傳送的資料長度 if len(data)!=0: data=data.decode('gbk') print(f'使用者端{ip_port[0]}使用埠{ip_port[1]}傳送是資料是{data}') else: print(f'使用者端{ip_port[0]}使用埠{ip_port[1]}關閉了連線') # 給使用者端傳送資料 data='你好'.encode('gbk') client_socket.send(data) # 關閉使用者端 client_socket.close() # 關閉伺服器端 server_socket.close()
import socket import threading def client_task(client_socket,ip_port): print(ip_port,'加入連線') # 持續接收使用者端的訊息 while True: data=client_socket.recv(1024).decode('gbk') if len(data)!=0: print(f'使用者端{ip_port[0]}發來的資訊是{data}') else: print(f'使用者端{ip_port[0]}已經斷開連線') break send_data=('Hello--'+data).encode('gbk') client_socket.send(send_data) if __name__ == '__main__': server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True) server_socket.bind(('',7777)) server_socket.listen(128) # 迴圈接收客戶連線 while True: client_socket,ip_port=server_socket.accept() # 會一直等待接收連線 t_client=threading.Thread(target=client_task,args=(client_socket,ip_port)) t_client.setDaemon(True) t_client.start()
''' 基於socket實現的多工版TCP伺服器端(物件導向) ''' import socket import threading class SocketServer(object): def __init__(self, port): self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True) self.server_socket.bind(('', port)) self.server_socket.listen(128) def start(self): # 迴圈接收客戶連線 while True: client_socket, ip_port = self.server_socket.accept() # 會一直等待接收連線 t_client = threading.Thread(target=self.client_task, args=(client_socket, ip_port)) t_client.setDaemon(True) t_client.start() def client_task(self,client_socket, ip_port): print(ip_port, '加入連線') # 持續接收使用者端的訊息 while True: data = client_socket.recv(1024).decode('gbk') if len(data) != 0: print(f'使用者端{ip_port[0]}發來的資訊是{data}') else: print(f'使用者端{ip_port[0]}已經斷開連線') break send_data = ('Hello--' + data).encode('gbk') client_socket.send(send_data) if __name__ == '__main__': server_socket=SocketServer(7777) server_socket.start()
到此這篇關於Python基於socket實現TCP使用者端和伺服器端的文章就介紹到這了,更多相關socket實現 TCP使用者端和伺服器端內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45