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程序设计有所帮助。