一个简单的UDP协议的通信

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个简单的UDP协议的通信相关的知识,希望对你有一定的参考价值。

Server

import socket  #引入socket模块

#建立一个UDP的服务端
udpServer = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#127.0.0.1 - 127.255.255.254 都属于访问本地  但是都是用 127.0.0.1
udpServer.bind(("10.0.144.160",8244))  #将server绑定一个ip和端口号,以便客户端访问
while True:
    print("x")
    data,addr = udpServer.recvfrom(1024)   # recvfrom()函数,是UDP专用的函数,用于接收数据,返回远端的字节数和ip地址,或者发生错误时返回-1
    print("消息为:",data.decode("utf-8"),"地址为",addr)

Client:

import socket
udp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)  
while True:
    data = input("请输入你要说的话")
    udp.sendto(data.encode("utf-8"),("10.0.144.160",8244))  #sendto UDP常用的函数,向某一地址发送数据

可以看到,无论是客户端还是服务器端,都使用了一条语句:

udp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 

那么这行代码是什么意思呢

  这里首先要搞清楚什么是套接字,套接字(scoket)是一种具有通信端口的计算机网络数据结构,大概相当于电话的插口,没有它就没办法通信。

  套接字主要分为两种:基于文件型和基于网络的

  第一种是AF_UNIX,基于文件的unix系统通信,由于两个进程同时运行在一个机器上,两个进程之间的socket便是基于文件系统而不是基于网络系统,文件系统可以被不同的进程所访问,不过这部分我暂时还没接触, 等以后运用到再详细研究。

  第二种是AF_INET,基于网络的,即internet。是ipv4套接字,比之ipv6,传输更便捷。

  socket.SOCK_DGRAM 代表的是UDP协议,socket.SOCK_STREAM代表TCP协议

  bind()将创建的套接字绑定一个ip,类似于实例化吧,把虚的东西切实的绑定一个地址。

第一次写博客,见谅见谅。

 

以上是关于一个简单的UDP协议的通信的主要内容,如果未能解决你的问题,请参考以下文章

UDP协议----简单的CS模型实现

网络通信协议:TCP(三次握手四次挥手)和UDP

82.基于tcp和udp协议的简单通信套接字编程

Python中的端口协议之基于UDP协议的通信传输

socket库:Python实现UDP客户和服务器通信

socket库:Python实现UDP客户和服务器通信