黑松山资源网 Design By www.paidiu.com
本文实例讲述了Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能。分享给大家供大家参考,具体如下:
由于目前工作的需要,需要在IPv4和IPv6两种网络模式下TCP和UDP的连接,要做到客户端发包,服务端收包。
前几天写了代码,但是把UDP的客户端和服务端使用TCP模式的代码了。今天在公司使用该工具的时候,发现了问题,忘记了UDP不需要验证。疏忽,疏忽。不过刚刚接触编程,可以原谅。
现在在家,已经把代码改好了。经测试可以使用。
先运行客户端:
python MiniClient.py host port mode(t4, t6, u4, u6)
再运行服务端:
python MiniServer.py host port mode(t4, t6, u4, u6)
客户端代码如下:
import socket, sys import time class MiniClient: h = '' p = '' m = '' def __init__(self, host, port, mode): self.h = host self.p = int(port) self.m = mode def tcpC4(self): tcpT4Client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print "Done........" tcpT4Client.connect((self.h, self.p)) print "TCP IPv4 TCP mode connecting..." while True: time.sleep(1) tcpT4Client.send('hello') print "hello send to Server" def udpC4(self): udpT4Client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) print "UDP TCP IPv4 Mode connecting..." while True: time.sleep(1) udpT4Client.sendto("hello", (self.h, self.p)) print "Hello Send to " , self.h , ' Use ', self.p, 'Port' def tcpC6(self): tcpT4Client = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) print "Done........" tcpT4Client.connect((self.h, self.p)) print "TCP IPv6 TCP mode connecting..." while True: time.sleep(1) tcpT4Client.send('hello') print "hello send to Server" def udpC6(self): udpU6Client = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) print "UDP TCP IPv4 Mode connecting..." while True: time.sleep(1) udpU6Client.sendto("hello", (self.h, self.p)) print "Hello Send to " , self.h , ' Use ', self.p, 'Port' if __name__ == "__main__": x = MiniClient(sys.argv[1], sys.argv[2], sys.argv[3]) if x.m == 't4': x.tcpC4() elif x.m == 't6': x.tcpC6() elif x.m == 'u4': x.udpC4() else: x.udpC6()
服务端代码:
import socket, sys class MiniServer: h = '' p = '' m = '' def __init__(self, host, port, mode): self.h = host self.p = int(port) self.m = mode def serverT4(self): tcpT4Server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print "Server Socket Created......." tcpT4Server.bind((self.h, self.p)) print "Wating for connecting......." tcpT4Server.listen(5) while True: clientSock, clientaddr = tcpT4Server.accept() print "Connected from: ", clientSock.getpeername() clientSock.send('Congratulations........') while True: buf = clientSock.recv(1024) print buf #clientSock.close() def udpT4(self): udpT4Server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) print "UDP TCP IPv4 Mode Start....." udpT4Server.bind((self.h, self.p)) print "UDP Server Start" while True: udpT4Data, udpT4ServerInfo = udpT4Server.recvfrom(1024) print "Receive from ", udpT4ServerInfo, " and The Data send from The Client is :", udpT4Data def serverT6(self): tcpT6Server = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) print "Server Socket Created......." tcpT6Server.bind((self.h, self.p)) print "Wating for connecting......." tcpT6Server.listen(5) while True: clientSock, clientaddr = tcpT6Server.accept() print "Connected from: ", clientSock.getpeername() clientSock.send('Congratulations........') #clientSock.close() def udpT6(self): udpT6Server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) print "UDP TCP IPv4 Mode Start....." udpT6Server.bind((self.h, self.p)) print "UDP Server Start" while True: udpT4Data, udpT6ServerInfo = udpT6Server.recvfrom(1024) print "Receive from ", udpT6ServerInfo, " and The Data send from The Client is :", udpT4Data if __name__ == "__main__": x = MiniServer(sys.argv[1], sys.argv[2], sys.argv[3]) if x.m == 't4': x.serverT4() elif x.m == 't6': x.serverT6() elif x.m == 'u4': x.udpT4() else: x.udpT6()
更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
黑松山资源网 Design By www.paidiu.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
黑松山资源网 Design By www.paidiu.com
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年10月08日
2024年10月08日
- 金铲铲之战S9阵容推荐攻略 6套阵容分享
- dnf手游追忆光环外观选哪个 dnf手游追忆光环外观选择推荐
- 怎么获得dnf手游紫色曲玉 dnf手游紫色曲玉获取方法一览
- dnf手游洗点水怎么获得 dnf手游洗点水获取方法介绍
- 万代南梦宫遭中国玩家抵制 《铁拳8》被疯狂刷差评
- 曝侃爷分手登微博热搜 网友:穿衣意见不合?
- 《暗喻幻想:ReFantazio》M站2024高分榜排名第三 超越《最终幻想7:重生》
- 赛季末发育路上分英雄推荐,狄仁杰A就行
- 小乔克制攻略:除了兰陵王还有更多好选
- 王者荣耀:对抗路难度排行,花木兰最能秀
- 群星《新说唱2024 第3期 (下)》[FLAC/分轨][89.04MB]
- 群星《歌手2024 第2期》[320K/MP3][95.59MB]
- 群星《歌手2024 第2期》[FLAC/分轨][260.73MB]
- 《原神》5.0基尼奇一图流养成攻略 基尼奇怎么培养
- 5.1版本up池角色一览,新版本角色卡池