Python 网络编程-创建 UDP 服务器和客户端相互通讯

目  录

1.创建 UDP 服务器和客户端相互通讯

1.1 服务器端代码实现

1.2 客户端代码实现

1.3 代码运行结果

2. socket 模块常见函数和Socket 类用法


有些基础知识,请参看:Python 网络编程-创建 TCP 服务器和客户端相互通讯

1.创建 UDP 服务器和客户端相互通讯

1.1 服务器端代码实现

from socket import * 
from time import ctime

HOST=''
PORT=22222
BUFSIZE=1024
ADDR=(HOST,PORT)

udpSerSocket=socket(AF_INET,SOCK_DGRAM)
udpSerSocket.bind(ADDR) #只需要绑定,不需要 connec


while True:
    print("waiting for connection....")
    data,addr=udpSerSocket.recvfrom(BUFSIZE)
    print("connecting from client:",addr)

    udpSerSocket.sendto(bytes("Current time is {0},data is {1}".format(ctime(),data.decode("utf-8")),'utf-8'),addr)
udpSerSocket.close()

1.2 客户端代码实现

from socket import *
HOST="localhost"
PORT=22222
BUFSIZE=1024
ADDR=(HOST,PORT)
udpClientSocket=socket(AF_INET,SOCK_DGRAM)

while True:
    data=input("Please input your words!\n")
    if not data:
        break
    udpClientSocket.sendto(bytes(data,"utf-8"),ADDR)
    data,ADDR=udpClientSocket.recvfrom(BUFSIZE)
    if not data:
        break
    print(data.decode("utf-8"))
udpClientSocket.close()

1.3 代码运行结果

服务器端运行良好

Python 网络编程-创建 UDP 服务器和客户端相互通讯_第1张图片

客户端运行良好

Python 网络编程-创建 UDP 服务器和客户端相互通讯_第2张图片 

 

2. socket 模块常见函数和Socket 类用法

socket 模块常用函数-TCP
服务器端操作 客户端操作

tcpSerSocket=socket(AF_INET,

SOCK_STREAM)

创建服务器端 TCP 套接字

tcpClientSocket=socket(AF_INET,

SOCK_STREAM)

创建客户端 TCP 套接字

tcpSerSocket.bind(ADDR)

服务器端套接字绑定地址

tcpClientSocket.connect(ADDR)

客户端必须连接服务器地址

tcpSerSocket.listen(5) 设置并且启动 TCP监听

tcpClientSock,addr=tcpSerSocket.accept()

tcpSerSocket.accept,接收到两个变量,一个是 tcpClientSock 用于后续给客户端发送消息,addr 是客户端地址

data=tcpClientSock.recv(BUFSIZE)

服务器端使用 accept 得到的 tcpClientSock 接受 TCP 数据

data=tcpClientSocket.recv(BUFSIZE)

客户端从服务器端接受TCP 数据

tcpClientSock.recv_into(BUF)

服务器端使用 accept 得到的 tcpClientSock 接受 TCP 数据到指定的缓冲区

tcpClientSock.recv_into(BUF)

客户端从服务器端接受TCP 数据到指定的缓冲区

tcpClientSock.send(bytes("Current time is {0}".format(ctime()),'utf-8'))

服务器端使用 accept 得到的 tcpClientSock 发送 TCP 数据,因为是面向连接的,所以不需要地址

tcpClientSocket.send(bytes(data,"utf-8"))

客户端使用套接字发送 TCP 数据给服务器端

tcpClientSock.sendall(data)

服务器端使用 accept 得到的 tcpClientSock 发送完整的 TCP 数据

tcpClientSocket.sendall(data)

客户端使用套接字发送 TCP 数据给服务器端

tcpClientSock.close()

服务器关闭客户端的套接字

tcpClientSock.close()

客户端关闭客户端的套接字

tcpSerSocket.close()

服务器端关闭服务器端的套接字

socket 模块常用函数-UDP
服务器端操作 客户端操作

udpSerSocket=socket(AF_INET,

SOCK_DGRAM)

创建服务器端 UDP 套接字

udpClientSocket=socket(AF_INET,

SOCK_DGRAM)

创建客户端 UDP 套接字

udpSerSocket.bind(ADDR)

服务器端套接字绑定地址

客户端不需要连接服务器端地址

UDP服务器 不需要监听

data,addr=udpSerSocket.recvfrom(BUFSIZE),接收到两个变量,一个是数据,一个是客户端地址

udpSerSocket.sendto(bytes(data),addr)

服务器端使用自己的套接字直接发送 UDP 数据到 addr 指定的地址

udpClientSocket.sendto(bytes(data),addr)

客户端使用自己的套接字直接发送 UDP 数据到 addr 指定的地址

udpSerSocket.close()

服务器关闭客户端的套接字

udpClientSock.close()

客户端关闭客户端的套接字

你可能感兴趣的:(#,Python,基础知识,udp,网络,服务器,python)