Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
本文实例讲述了Python实现基于TCPUDP协议的IPv4IPv6模式客户端和服务端功能。分享给大家供大家参考,具体如下:
由于目前工作的需要,需要在IPv4和IPv6两种网络模式下TCP和UDP的连接,要做到客户端发包,服务端收包。
前几天写了代码,但是把UDP的客户端和服务端使用TCP模式的代码了。今天在公司使用该工具的时候,发现了问题,忘记了UDP不需要验证。疏忽,疏忽。不过刚刚接触编程,可以原谅。
现在在家,已经把代码改好了。经测试可以使用。
先运行客户端:
pythonMiniClient.pyhostportmode(t4,t6,u4,u6)
再运行服务端:
pythonMiniServer.pyhostportmode(t4,t6,u4,u6)
客户端代码如下:
importsocket,sys importtime classMiniClient: h='' p='' m='' def__init__(self,host,port,mode): self.h=host self.p=int(port) self.m=mode deftcpC4(self): tcpT4Client=socket.socket(socket.AF_INET,socket.SOCK_STREAM) print"Done........" tcpT4Client.connect((self.h,self.p)) print"TCPIPv4TCPmodeconnecting..." whileTrue: time.sleep(1) tcpT4Client.send('hello') print"hellosendtoServer" defudpC4(self): udpT4Client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) print"UDPTCPIPv4Modeconnecting..." whileTrue: time.sleep(1) udpT4Client.sendto("hello",(self.h,self.p)) print"HelloSendto",self.h,'Use',self.p,'Port' deftcpC6(self): tcpT4Client=socket.socket(socket.AF_INET6,socket.SOCK_STREAM) print"Done........" tcpT4Client.connect((self.h,self.p)) print"TCPIPv6TCPmodeconnecting..." whileTrue: time.sleep(1) tcpT4Client.send('hello') print"hellosendtoServer" defudpC6(self): udpU6Client=socket.socket(socket.AF_INET6,socket.SOCK_DGRAM) print"UDPTCPIPv4Modeconnecting..." whileTrue: time.sleep(1) udpU6Client.sendto("hello",(self.h,self.p)) print"HelloSendto",self.h,'Use',self.p,'Port' if__name__=="__main__": x=MiniClient(sys.argv[1],sys.argv[2],sys.argv[3]) ifx.m=='t4': x.tcpC4() elifx.m=='t6': x.tcpC6() elifx.m=='u4': x.udpC4() else: x.udpC6()
服务端代码:
importsocket,sys classMiniServer: h='' p='' m='' def__init__(self,host,port,mode): self.h=host self.p=int(port) self.m=mode defserverT4(self): tcpT4Server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) print"ServerSocketCreated......." tcpT4Server.bind((self.h,self.p)) print"Watingforconnecting......." tcpT4Server.listen(5) whileTrue: clientSock,clientaddr=tcpT4Server.accept() print"Connectedfrom:",clientSock.getpeername() clientSock.send('Congratulations........') whileTrue: buf=clientSock.recv(1024) printbuf #clientSock.close() defudpT4(self): udpT4Server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) print"UDPTCPIPv4ModeStart....." udpT4Server.bind((self.h,self.p)) print"UDPServerStart" whileTrue: udpT4Data,udpT4ServerInfo=udpT4Server.recvfrom(1024) print"Receivefrom",udpT4ServerInfo,"andTheDatasendfromTheClientis:",udpT4Data defserverT6(self): tcpT6Server=socket.socket(socket.AF_INET6,socket.SOCK_STREAM) print"ServerSocketCreated......." tcpT6Server.bind((self.h,self.p)) print"Watingforconnecting......." tcpT6Server.listen(5) whileTrue: clientSock,clientaddr=tcpT6Server.accept() print"Connectedfrom:",clientSock.getpeername() clientSock.send('Congratulations........') #clientSock.close() defudpT6(self): udpT6Server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) print"UDPTCPIPv4ModeStart....." udpT6Server.bind((self.h,self.p)) print"UDPServerStart" whileTrue: udpT4Data,udpT6ServerInfo=udpT6Server.recvfrom(1024) print"Receivefrom",udpT6ServerInfo,"andTheDatasendfromTheClientis:",udpT4Data if__name__=="__main__": x=MiniServer(sys.argv[1],sys.argv[2],sys.argv[3]) ifx.m=='t4': x.serverT4() elifx.m=='t6': x.serverT6() elifx.m=='u4': x.udpT4() else: x.udpT6()
更多关于Python相关内容可查看本站专题:《PythonSocket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。