TCP與UDP的區別:
TCP速度慢,穩定。UDP速度快,不穩定,易丟數據。
UDP:
#客戶端代碼
>>> import socket
>>> ClientSocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#創建套接字
>>> sendtoAddr=("192.168.1.111",7561)#接收方的地址,端口
>>> ClientSocket.sendto(b"hello,python",sendtoAddr)#發送數據
12
#服務端方代碼
>>> import socket
>>> ServerSocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
>>> Addr=("",7561) #本地地址,端口,地址通常不用謝
>>> ServerSocket.bind(Addr)# 綁定本地地址,端口號
>>> Data,Addr=ServerSocket.recvfrom(1024) #接收到的數據和地址
>>> Data
b'hello,python'
>>> Addr
('192.168.1.104',55598)
TCP:
#客戶端代碼
>>> import socket
>>> ClientSocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #創建套接字
>>> SendtoAddr=("192.168.1.106",8899) #服務器端地址
>>> ClientSocket.connect(SendtoAddr) #與服務器進行連接
>>> ClientSocket.send(b"hello,python") #發送數據
12
>>> RecvData=ClientSocket.recv(1024) #接收數據
>>> print(RecvData)
b'Get Information'
>>> ClientSocket.close()
#服務器端代碼
In [1]: import socket
In [2]: ServerSocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
In [3]: Addr=("",8899)
In [4]: ServerSocket.bind(Addr) #綁定
In [5]: ServerSocket.listen(5) #監聽,參數5可以是其他數字,在Linux中沒有影響,Mac中有影響
In [6]: ClientSocket,ClientInfo=ServerSocket.accept() #等待客戶端的連接,連接後返回一個客戶端套接字對象
In [7]: RecvData=ClientSocket.recv(1024)#接收來自客戶端的數據
In [8]: print(RecvData)
b'hello,python'
In [9]: ClientSocket.send(b"Get Information") #向客戶端發送數據
Out[9]: 15
In [10]: ServerSocket.close()