第一阶段:Python开发基础 day33 网络编程之socketsever模块和udp协议

一、socketserver模块

服务端:

#使用socketserver写服务端
#导入模块
import socketserver

#自己定义一个类,必须继承BaseRequestHandler
class MyTcp(socketserver.BaseRequestHandler):
    #必须重写handle方法
    def handle(self):
        try:
            while True :  #通信循环
                # print(self)
                #给客户端回消息
                #conn对象就是request
                #接收数据
                print(self.client_address)
                data=self.request.recv(1024)
                print(data)
                if len(data)==0:
                    return
                #发送数据
                self.request.send(data.upper())
        except Exception:
            pass


if __name__ == '__main__':
    #实例化得到一个tcp连接的对象,Threading意思是说,只要来了请求,它自动的开线程来处理连接跟交互数据
    #第一个参数是绑定的地址,第二个参数传一个类
    server=socketserver.ThreadingTCPServer(('127.0.0.1',8009),MyTcp)
    #一直在监听
    #这么理解:只要来一个请求,就起一个线程(造一个人,做交互)
    server.serve_forever()

客户端:

import socket
import time
soc=socket.socket()

soc.connect(('127.0.0.1',8009))
while True:
    soc.send('xxxx'.encode('utf-8'))
    print(soc.recv(1024))

二、udp协议

服务端:

# 基础版本
# import socket
# #udp
# server=socket.socket(type=socket.SOCK_DGRAM)
#
# server.bind(('127.0.0.1', 8003))
# # udp不要建立连接,直接发
# #需不需要监听?
# #跟tcp的不是一样的
# # data=server.recvfrom(1024)
# data,addr=server.recvfrom(1024)
# #data 是个元组,第一个参数是数据不部分,第二个参数是客户端地址
# print(data)
# server.sendto(data.upper(),addr)


#加入通信循环

import socket
#udp
server=socket.socket(type=socket.SOCK_DGRAM)

server.bind(('127.0.0.1', 8003))

while True:
    data,addr=server.recvfrom(1024)
    print(data)
    server.sendto(data.upper(),addr)

客户端:

# import socket
# #udp
# client=socket.socket(type=socket.SOCK_DGRAM)
#
#
# #直接发
# client.sendto(b'lqz',('127.0.0.1', 8003))
# data=client.recvfrom(1024)
# print(data)

#加入通信循环
import socket
#udp
client=socket.socket(type=socket.SOCK_DGRAM)

while True:
    msg=input('>>:')
    #直接发
    client.sendto(msg.encode('utf-8'),('127.0.0.1', 8003))
    data=client.recvfrom(1024)
    print(data)
原文地址:https://www.cnblogs.com/foreversun92/p/11528396.html