版权声明:笔记随便写写 https://blog.csdn.net/aaxin_666/article/details/83964117
网络编程之udp
网络协议有udp和tcp等等,今天就记录一下udp的接收数据与发送数据
发送数据
比较基础的代码案例,能够实现基础的进程间通信,
在这里如何检查代码成功实现了呢??
我们需要借助一个小的APP助手 ——tcp调试助手
tcp调试助手
效果图如下(版本不一致可能会导致不一致,但是大致一样):
代码实现流程:
- 创建套接字
- 输入数据
- 发送数据 (方法参数 发送的的数据(注意编码,是二进制),目标的ip地址与端口)
- 关闭套接字
接收数据
代码图:
接收数据代码实现:
5. 创建套接字
6. 绑定套接字的ip与端口号,目的在于确定接收程序进程的唯一性
7. 接受数据,参数是想要接收字数的多少
8. 打印数据(注意的是二进制格式需要解码decode,解码格式需要采用发送数据方的解码格式,比如,Windows系统发送中文的时候编码成二进制的时候是采用“gbk”,所以解码的时候用“gbk”)
基于udp实现一个建议的聊天器
基于以上说的,想要实现聊天器功能,就必须实现能够同时接受与发送
功能,socket是一个全双工的作用,属于能够同时接收与发送的,但是涉及到篇幅,这里只是实现了半双工的功能,只能等发送完毕才能够接收
代码:
import socket
def send_message(udp_socket,dest_ip,dest_port):
send_data = input("请输入你要发送的信息:")
udp_socket.sendto(send_data.encode("gbk"),(dest_ip,dest_port))
def receive_message(udp_socket):
udp_rece = udp_socket.recvfrom(1024)
print(udp_rece[0].decode("gbk"),udp_rece[1])
def main():
#创建套接字
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
dest_ip = input("请输入目标ip:")
dest_port = int(input("请输入目标port:"))
#绑定ip和port
udp_socket.bind(("",8888))
#循环来处理事情
while True:
#发送
send_message(udp_socket,dest_ip,dest_port)
#接受
receive_message(udp_socket)
if __name__ == "__main__":
main()
实现效果图:
借助于网络调试助手:
其实在这里可以不用借助网络调试助手
只需要你在重新写一个程序,绑定ip于port号,就能够实现进程间通信
需要注意的是i进程间的ip是需要可以ping通的,在Windows/linux系统中,使用ping 命令,ping + ip 地址,能够ping通的前提下,就可以通信,
如下:
多多批评,欢迎提意见!!!