Pythoh网络编程4:创建UDP服务器和客户端

执行UDP连接的方式与TCP大致相同,不同之处在于客户端和服务器端之间不建立“连接”:

Pythoh网络编程4:创建UDP服务器和客户端

1.创建UDP服务器

 

# filename:udpServer.py



from socket import *

from time import ctime



HOST = ''                          # HOST为空与INADDR_ANY含义相同,表示任何地址

PORT = 21567                       # 端口号21567

BUFSIZE = 1024                     # 缓冲区的大小为1K



ADDR = (HOST, PORT)                # 地址元组



# 创建服务器端套接字

udpSerSock = socket(AF_INET, SOCK_DGRAM)

# 将套接字与地址绑定

udpSerSock.bind(ADDR)



# 服务器进入无限循环

while True:

    print('waiting for message...')

    # 接收来自客户端的数据,返回数据和地址元组

    re_data, addr = udpSerSock.recvfrom(BUFSIZE)

    print('...receieved from and returned to:', addr)

    # 发送数据给客户端,内容:[时间]接受的信息

    # bytes.decode()对接收的内容进行解码

    se_data = ['[', str(ctime()), ']', str(re_data.decode())]

    # str.encode()对发送内容进行编码

    udpSerSock.sendto((''.join(se_data)).encode(), addr)



# 关闭服务器端套接字

udpSerSock.close()

2.创建UDP客户端

# filename:udpClient.py



from socket import *



HOST = 'localhost'                  # HOST为localhost表示本机,可以换成其他表示服务器端的地址或者域名

PORT = 21567                        # 端口号21567

BUFSIZE = 1024                      # 缓冲区的大小为1K



ADDR = (HOST, PORT)                 # 地址元组



# 创建客户端套接字

udpCliSock = socket(AF_INET, SOCK_DGRAM)



# 通信循环

while True:

    # 提示用户输入

    se_data = input('> ')

    if not se_data:

        break

    # 向服务器端发送数据

    # str.encode()对发送内容进行编码

    udpCliSock.sendto(se_data.encode(), ADDR)



    # 接收来自服务器端的数据

    re_data, addr = udpCliSock.recvfrom(BUFSIZE)

    if not re_data:

        break

    # bytes.decode()对接收的内容进行解码

    print(re_data.decode())



# 关闭客户端套接字

udpCliSock.close() 

3.运行

Pythoh网络编程4:创建UDP服务器和客户端

 

 

你可能感兴趣的:(网络编程)