本文實例講述了Python實現基於TCP UDP協議的IPv4 IPv6模式客戶端和服務端功能。分享給你們供你們參考,具體以下:python
因爲目前工做的須要,須要在IPv4和IPv6兩種網絡模式下TCP和UDP的鏈接,要作到客戶端發包,服務端收包。編程
前幾天寫了代碼,可是把UDP的客戶端和服務端使用TCP模式的代碼了。今天在公司使用該工具的時候,發現了問題,忘記了UDP不須要驗證。疏忽,疏忽。不過剛剛接觸編程,能夠原諒。網絡
如今在家,已經把代碼改好了。經測試能夠使用。socket
先運行客戶端:tcp
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程序設計有所幫助。server