• 基于socketserver模块并发套接字


    1、基于tcp协议

    服务端:

    import socketserver
    class MyHandler(socketserver .BaseRequestHandler ):
    def handle(self): #通信循环
    while True :
    try:
    data = self.request .recv(1024) #request表示建立的链接
    if len(data)== 0:break
    self.request .send(data.upper())
    except ConnectionResetError :
    break
    if __name__=='__main__' :
    s= socketserver .ThreadingTCPServer (('127.0.0.1',8080),MyHandler ,bind_and_activate= True )
    s.serve_forever()
    # 链接循环,每建立一个链接就会启动一个线程,并调用Myhanlder类产生一个对象,调用对象下的handle方法
    # 与刚刚建立好的链接做通讯循环

    客户端:
    import socket
    phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    phone.connect(('127.0.0.1',8080)) # 指定服务端ip和端口

    while True:
    msg=input('>>: ').strip() #msg=''
    #msg = 'client22222' # msg=''
    if len(msg) == 0:continue
    phone.send(msg.encode('utf-8'))
    data=phone.recv(1024)
    print(data)
    phone.close()

    2、基于udp协议
    #服务端
    class Myhandler(socketserver .BaseRequestHandler ):
    def handler(self):
    #print(self.client_address ) #客户端IP和端口
    # 套接字对象 (b'gg', <socket.socket fd=344, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('127.0.0.1', 8080)>)
    #print(self.request)
    data = self.request [0] #对应着客户端发来的信息
    print('客户消息',data)
    self.request [1].sendto(data.upper(),self.client_address )
    if __name__ == '__main__':
    s= socketserver .ThreadingUDPServer (('127.0.0.1',8080),Myhandler )
    s.serve_forever()

    客户端:
    import socket
    client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #数据报协议-》udp
    while True:
    msg=input('>>: ').strip() #msg=''
    client.sendto(msg.encode('utf-8'),('127.0.0.1',8080))
    data,server_addr=client.recvfrom(1024)
    print(data)

    client.close()





























































  • 相关阅读:
    Digital image processing In C#
    C#数字图像处理(摘录)
    C# P/Invoke中传递数组参数
    字符常用方法(c#)——(待扩展)
    java监控多个线程的实现
    jdbc访问数据库
    java与MSSQL2000连接
    java下的日期函数实现
    MyEclipse中防止代码格式化时出现换行的情况的设置
    java InputStream读取数据问题
  • 原文地址:https://www.cnblogs.com/quqinchao/p/9289957.html
Copyright © 2020-2023  润新知