python3- Socket簡單使用 1-udp通信 2TCP發消息,自己作爲客戶端 3 TCP服務端,自己作爲服務器接受客戶端請求

某度搜索NetAssist(網絡調試助手),可以用來測試發送接收消息

配合NetAssist來測試效果顯著

1-udp通信

import socket
#                 #進行互聯網連接, #採用udp方式
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#綁定自己主機的ip地址和任意端口
s.bind(("192.168.0.110",8000))
#data:要發送的數據,他是二級制數據
#address是一個元組(ip地址,端口號)
#向192.168.0.110這個主機的9000端口上發送hello

#udp 只管發,不理有沒有人收
#端口號0-65536      0-1024不要使用,系統佔用
s.sendto("Hell49o".encode("utf8"),("192.168.0.111",8000))

#接收消息
data,addr = s.recvfrom(1024)#這是一個等待方法
#接收到一個數據和一個元組,第0個數據是ip地址 第1個數據是端口號
print("從{}地址{}端口號接收到了消息,內容是:{}".format(addr[0],addr[1],data.decode("utf8")))
s.close()


#udp:沒有嚴格的客戶端和服務器的區別
#tcp:有客戶端和服務器面向連接協議的協議

2TCP發消息,自己作爲客戶端

import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#發送消息前必須跟服務器建立連接
s.connect(("192.168.0.111",8888))
s.send("hellUUUUUo123".encode("utf8"))
s.close()

3 TCP服務端,自己作爲服務器接受客戶端請求

import socket
ser = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ser.bind(("192.168.0.110",9999))
#把socket變成一個被動監聽的socket
ser.listen(128)
#接收客戶端請求
x = ser.accept()#接受客戶端的請求,接受到的是一個元組
#第0個元素是客戶端socket連接,第1個元素是客戶端的ip地址和端口號
#(<socket.socket fd=436, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.0.110', 8888), 
#raddr=('192.168.0.111', 53563)>, ('192.168.0.111', 53563))
client_socket,client_addr = x
data = client_socket.recv(1024)
print("接收了{}客戶端{}端口號發送的數據,內容是:{}".format(client_addr[0],client_addr[1],data.decode("utf8")))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章