本文实例讲述了Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能。分享给大家供大家参考,具体如下:
由于目前工作的需要,需要在IPv4和IPv6两种网络模式下TCP和UDP的连接,要做到客户端发包,服务端收包。
前几天写了代码,但是把UDP的客户端和服务端使用TCP模式的代码了。今天在公司使用该工具的时候,发现了问题,忘记了UDP不需要验证。疏忽,疏忽。不过刚刚接触编程,可以原谅。
现在在家,已经把代码改好了。经测试可以使用。
<强>先运行客户端:强>
python MiniClient。py主机端口模式(t4, t6、u4 u6) >之前<强>再运行服务端:强>
python MiniServer。py主机端口模式(t4, t6、u4 u6) >之前<强>客户端代码如下:强>
进口套接字,系统 导入的时间 类MiniClient: h=" p=" m=" def __init__(自我、主机、端口模式): 自我。h=主机 自我。p=int(端口) 自我。m=模式 def tcpC4(自我): tcpT4Client=socket.socket(插座。AF_INET socket.SOCK_STREAM) 打印”........” tcpT4Client.connect(自我。h, self.p)) 打印“TCP IPv4 TCP连接方式……” 而真正的: time . sleep (1) tcpT4Client.send(“你好”) 打印“你好”发送到服务器 def udpC4(自我): udpT4Client=socket.socket(插座。AF_INET socket.SOCK_DGRAM) 打印”UDP TCP IPv4模式连接…” 而真正的: time . sleep (1) udpT4Client。sendto (“hello”,(自我。h, self.p)) 打印“你好”发送到,自我。h,“使用”,自我。p,“端口” def tcpC6(自我): tcpT4Client=socket.socket(插座。AF_INET6 socket.SOCK_STREAM) 打印”........” tcpT4Client.connect(自我。h, self.p)) 打印“TCP IPv6 TCP连接方式……” 而真正的: time . sleep (1) tcpT4Client.send(“你好”) 打印“你好”发送到服务器 def udpC6(自我): udpU6Client=socket.socket(插座。AF_INET6 socket.SOCK_DGRAM) 打印”UDP TCP IPv4模式连接…” 而真正的: time . sleep (1) udpU6Client。sendto (“hello”,(自我。h, self.p)) 打印“你好”发送到,自我。h,“使用”,自我。p,“端口” if __name__==癬_main__”: x=MiniClient (sys。sys argv [1]。sys.argv argv [2], [3]) 如果x。m==皌4”: x.tcpC4 () elif x。m==皌6”: x.tcpC6 () elif x。m==淇臁? x.udpC4 () 其他: x.udpC6 () >之前<>强服务端代码:强>
进口套接字,系统 类MiniServer: h=" p=" m=" def __init__(自我、主机、端口模式): 自我。h=主机 自我。p=int(端口) 自我。m=模式 def serverT4(自我): tcpT4Server=socket.socket(插座。AF_INET socket.SOCK_STREAM) 打印”服务器套接字创建.......” tcpT4Server.bind(自我。h, self.p)) 打印“连接.......等候” tcpT4Server.listen (5) 而真正的: clientSock clientaddr=tcpT4Server.accept () 打印”连接从:“clientSock.getpeername () clientSock.send(“恭喜........”) 而真正的: buf=clientSock.recv (1024) 打印缓冲区 # clientSock.close () def udpT4(自我): udpT4Server=socket.socket(插座。AF_INET socket.SOCK_DGRAM) 打印”UDP TCP IPv4模式开始.....” udpT4Server.bind(自我。h, self.p)) 打印“UDP服务器启动” 而真正的: udpT4Data udpT4ServerInfo=udpT4Server.recvfrom (1024) udpT4ServerInfo打印“收到”,“从客户机发送的数据是:“,udpT4Data def serverT6(自我): tcpT6Server=socket.socket(插座。AF_INET6 socket.SOCK_STREAM) 打印”服务器套接字创建.......” tcpT6Server.bind(自我。h, self.p)) 打印“连接.......等候” tcpT6Server.listen (5) 而真正的: clientSock clientaddr=tcpT6Server.accept () 打印”连接从:“clientSock.getpeername () clientSock.send(“恭喜........”) # clientSock.close () def udpT6(自我): udpT6Server=socket.socket(插座。AF_INET socket.SOCK_DGRAM) 打印”UDP TCP IPv4模式开始.....” udpT6Server.bind(自我。h, self.p)) 打印“UDP服务器启动” 而真正的: udpT4Data udpT6ServerInfo=udpT6Server.recvfrom (1024) udpT6ServerInfo打印“收到”,“从客户机发送的数据是:“,udpT4Data if __name__==癬_main__”: x=MiniServer (sys。sys argv [1]。sys.argv argv [2], [3]) 如果x。m==皌4”: x.serverT4 () elif x。m==皌6”: x.serverT6 () elif x。m==淇臁? x.udpT4 () 其他: x.udpT6 ()Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例