电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python網絡編程socket實現服務端、客戶端操作詳解

瀏覽:120日期:2022-08-01 14:30:33

本文實例講述了python網絡編程socket實現服務端、客戶端操作。分享給大家供大家參考,具體如下:

本文內容: socket介紹 TCP: 服務端 客戶端 UDP: 服務端 客戶端

首發時間:2018-02-08 01:14

修改:

2018-03-20 :重置了布局,增加了UDP什么是socket: socket又稱'套接字',應用程序通常通過'套接字'向網絡發出請求或者應答網絡請求。 網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,這個連接的一端稱為一個socket。 socket就像電話線插口,只有電話線插上了,才能通信。 python中使用socket來進行網絡連接傳輸 TCP: 如果使用socket模塊來創建TCP客戶端和服務端: 首發需要導入模塊:import socket 然后創建過程在下面 服務端:

TCP服務端一般需要下面幾個操作:建立,綁定IP地址和端口,監聽端口,等待連接,接收數據,傳輸數據 ,關閉連接

建立:server=socket.socket(socket.AF_INET, socket.SOCK_STREAM) 【參數默認就是socket.AF_INET, socket.SOCK_STREAM】 綁定端口:server.bind((’IP地址’,端口)),【地址和端口號是一個 tuple 】 監聽:server.listen() 接受連接: conn,addr=server.accept(),返回值是一個連接實例和一個地址,地址是連接過來的客戶端地址,而數據操作要利用這個連接實例 傳輸數據:conn.send(data),【傳輸的數據必須是字節流,所以對字符串數據需要使用encode() 】 接收數據read:conn.recv(size),【傳輸的數據必須是字節流,size是接收的字節數,如果需要轉成Unicode,需要使用decode() 】 關閉連接close:close()

import socketserver=socket.socket()#建立socketserver.bind((’localhost’,1234))#綁定server.listen()#監聽print('開始等待。。。')conn,addr=server.accept()#接收連接print('連接成功')data=conn.recv(1024)#接收數據print(data.decode())conn.send(data)#發送數據server.close()#關閉連接print('--------------------')上述代碼存在一個問題:只能接受一次連接,連接結束后,服務端socket將關閉,更改成不立即關閉能等待下一個連接的:

#服務器端import socketserver = socket.socket()server.bind((’localhost’,1234)) #綁定ip和端口server.listen(5) #監聽while True: print('開始等待') conn, addr = server.accept() print(conn, addr) print('客戶端連接') while True: data = conn.recv(1024) print('recv:',data) if not data: #當data=0時為真 print('連接斷開...') break conn.send(data)server.close()

注:上述代碼中在linux中正常運行,在windows中會報錯!

如果要在windows中運行,需要捕獲異常:

#服務器端import socketserver = socket.socket()server.bind((’localhost’,1234)) #綁定ip和端口server.listen(5) #監聽while True: print('開始等待') conn, addr = server.accept() print(conn, addr) print('客戶端連接') while True: try: data = conn.recv(1024) print('recv:',data) if not data: #當data=0時為真print('連接斷開...')break conn.send(data) except ConnectionResetError as e: print(e) breakserver.close() 客戶端:

TCP客戶端一般需要下面幾個操作:建立socket,連接遠程socket,傳輸數據 ,接收數據,關閉連接

建立:client=socket.socket() 連接:client.connect((’IP地址’,端口)),其中地址和端口號是一個 tuple 傳輸數據:client.send(data),傳輸的數據必須是字節流,所以對字符串數據需要使用encode() 接收數據recv:client.recv(size),傳輸的數據是字節流,如果需要轉成Unicode,需要使用decode() 關閉連接close:close()

import socketclient=socket.socket()#建立socketclient.connect((’localhost’,1234))#連接client.send('你好'.encode())#發送數據data=client.recv(1024)#接收數據print(data.decode())client.close()#關閉連接上述代碼存在一個問題:只能發送一次數據,發生完數據就會斷開連接,改成可以多次發送數據,不自動斷開的【前提是服務端能接收多次】:

import socketclient=socket.socket()client.connect((’localhost’,1234))while True: cmd=input('>>') if len(cmd)==0: continue client.send(cmd.encode()) cmd_res=client.recv(1024) print(cmd_res.decode())client.close() UDP: 服務端:

UDP服務端通常有以下幾個操作:創建socket,綁定端口,傳輸數據,接收數據

創建socket:server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 綁定端口:server.bind(addr),【addr是一個元組,內容為(地址,端口)】 接收數據:data,client_addr=server.recvfrom(1024) 傳輸數據:server.sendto(data,client_addr)

import socketimport timeserver=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)server.bind(('localhost',1234))start_time=time.time()while True: data,addr=server.recvfrom(1024) print(data,addr) server.sendto('hello'.encode(),addr) time.sleep(1) if time.time()-start_time>30: breakserver.close() 客戶端:

UDP客戶端通常有以下幾個操作:創建socket,傳輸數據,接收數據

創建socket:client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 傳輸數據:server.sendto(data,addr),【addr是一個元組,內容為(地址,端口)】 接收數據:data,server_addr=client.recvfrom(1024)

import socket,timeclient=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)addr=('localhost',1234)start_time=time.time()while True: client.sendto(time.ctime().encode(),addr) data,addr= client.recvfrom(1024) print(data) time.sleep(1) if time.time()-start_time>30: breakclient.close()

更多關于Python相關內容可查看本站專題:《Python Socket編程技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對大家Python程序設計有所幫助。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 小型气象站_便携式自动气象站_校园气象站-竞道气象设备网 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 冷却塔降噪隔音_冷却塔噪声治理_冷却塔噪音处理厂家-广东康明冷却塔降噪厂家 | 天津市能谱科技有限公司-专业的红外光谱仪_红外测油仪_紫外测油仪_红外制样附件_傅里叶红外光谱技术生产服务厂商 | 工业设计,人工智能,体验式3D展示的智能技术交流服务平台-纳金网 J.S.Bach 圣巴赫_高端背景音乐系统_官网 | 车牌识别道闸_停车场收费系统_人脸识别考勤机_速通门闸机_充电桩厂家_中全清茂官网 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 警方提醒:赣州约炮论坛真的安全吗?2025年新手必看的网络交友防坑指南 | 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 | 3d可视化建模_三维展示_产品3d互动数字营销_三维动画制作_3D虚拟商城 【商迪3D】三维展示服务商 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | 重庆私家花园设计-别墅花园-庭院-景观设计-重庆彩木园林建设有限公司 | 六自由度平台_六自由度运动平台_三自由度摇摆台—南京全控科技 | 木材烘干机,木炭烘干机,纸管/佛香烘干设备-河南蓝天机械制造有限公司 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 太阳能发电系统-太阳能逆变器,控制器-河北沐天太阳能科技首页 | 广州工业氧气-工业氩气-工业氮气-二氧化碳-广州市番禺区得力气体经营部 | 北京中航时代-耐电压击穿试验仪厂家-电压击穿试验机 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 一级建造师培训_一建培训机构_中建云筑建造师培训网校 | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 儿童乐园|游乐场|淘气堡招商加盟|室内儿童游乐园配套设备|生产厂家|开心哈乐儿童乐园 | 浙江红酒库-冰雕库-气调库-茶叶库安装-医药疫苗冷库-食品物流恒温恒湿车间-杭州领顺实业有限公司 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 400电话_400电话申请_888元包年_400电话办理服务中心_400VIP网 | 空冷器|空气冷却器|空水冷却器-无锡赛迪森机械有限公司[官网] | 压缩空气冷冻式干燥机_吸附式干燥机_吸干机_沪盛冷干机 | 空压机网_《压缩机》杂志 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 冷镦机-多工位冷镦机-高速冷镦机厂家-温州金诺机械设备制造有限公司 | 尊享蟹太太美味,大闸蟹礼卡|礼券|礼盒在线预订-蟹太太官网 | 波纹补偿器_不锈钢波纹补偿器_巩义市润达管道设备制造有限公司 | 电子天平-华志电子天平厂家| 立式硫化罐-劳保用品硫化罐-厂家直销-山东鑫泰鑫硫化罐厂家 | 生态板-实木生态板-生态板厂家-源木原作生态板品牌-深圳市方舟木业有限公司 | 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 岸电电源-60HZ变频电源-大功率变频电源-济南诚雅电子科技有限公司 |