python网络编程之udp——接收与发送数据

网络编程之udp

网络协议有udp和tcp等等,今天就记录一下udp的接收数据与发送数据

发送数据


比较基础的代码案例,能够实现基础的进程间通信,
在这里如何检查代码成功实现了呢??
我们需要借助一个小的APP助手 ——tcp调试助手
tcp调试助手
效果图如下(版本不一致可能会导致不一致,但是大致一样):
python网络编程之udp——接收与发送数据_第1张图片代码实现流程:

  1. 创建套接字
  2. 输入数据
  3. 发送数据 (方法参数 发送的的数据(注意编码,是二进制),目标的ip地址与端口)
  4. 关闭套接字

接收数据

代码图:

接收数据代码实现:
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()

实现效果图:
借助于网络调试助手:
python网络编程之udp——接收与发送数据_第2张图片

其实在这里可以不用借助网络调试助手

只需要你在重新写一个程序,绑定ip于port号,就能够实现进程间通信
需要注意的是i进程间的ip是需要可以ping通的,在Windows/linux系统中,使用ping 命令,ping + ip 地址,能够ping通的前提下,就可以通信,
如下:
python网络编程之udp——接收与发送数据_第3张图片
多多批评,欢迎提意见!!!

你可能感兴趣的:(python网络编程之udp——接收与发送数据)