某度搜索NetAssist(網(wǎng)絡(luò)調(diào)試助手)叛溢,可以用來測(cè)試發(fā)送接收消息
配合NetAssist來測(cè)試效果顯著
1-udp通信
import socket
# #進(jìn)行互聯(lián)網(wǎng)連接, #采用udp方式
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#綁定自己主機(jī)的ip地址和任意端口
s.bind(("192.168.0.110",8000))
#data:要發(fā)送的數(shù)據(jù)罐柳,他是二級(jí)制數(shù)據(jù)
#address是一個(gè)元組(ip地址,端口號(hào))
#向192.168.0.110這個(gè)主機(jī)的9000端口上發(fā)送hello
#udp 只管發(fā)满力,不理有沒有人收
#端口號(hào)0-65536 0-1024不要使用焕参,系統(tǒng)占用
s.sendto("Hell49o".encode("utf8"),("192.168.0.111",8000))
#接收消息
data,addr = s.recvfrom(1024)#這是一個(gè)等待方法
#接收到一個(gè)數(shù)據(jù)和一個(gè)元組轻纪,第0個(gè)數(shù)據(jù)是ip地址 第1個(gè)數(shù)據(jù)是端口號(hào)
print("從{}地址{}端口號(hào)接收到了消息,內(nèi)容是:{}".format(addr[0],addr[1],data.decode("utf8")))
s.close()
#udp:沒有嚴(yán)格的客戶端和服務(wù)器的區(qū)別
#tcp:有客戶端和服務(wù)器面向連接協(xié)議的協(xié)議
2TCP發(fā)消息叠纷,自己作為客戶端
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#發(fā)送消息前必須跟服務(wù)器建立連接
s.connect(("192.168.0.111",8888))
s.send("hellUUUUUo123".encode("utf8"))
s.close()
3 TCP服務(wù)端,自己作為服務(wù)器接受客戶端請(qǐng)求
import socket
ser = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ser.bind(("192.168.0.110",9999))
#把socket變成一個(gè)被動(dòng)監(jiān)聽的socket
ser.listen(128)
#接收客戶端請(qǐng)求
x = ser.accept()#接受客戶端的請(qǐng)求,接受到的是一個(gè)元組
#第0個(gè)元素是客戶端socket連接刻帚,第1個(gè)元素是客戶端的ip地址和端口號(hào)
#(<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("接收了{(lán)}客戶端{(lán)}端口號(hào)發(fā)送的數(shù)據(jù),內(nèi)容是:{}".format(client_addr[0],client_addr[1],data.decode("utf8")))