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")))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章