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 代码运行结果

服务器端运行良好

客户端运行良好

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()

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南野栀子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值