zoukankan      html  css  js  c++  java
  • python socket编程tcp/udp俩连接

    #服务端代码

    import socket, threading
    import time
    
    '''
    #服务端 TCP连接
    
    def tcplink(sock, addr):
        print('Accept new connection from %s:%s...' % addr)
        sock.send(b'Welcome!')
        while True:
            data = sock.recv(1024)
            time.sleep(1)
            if not data or data.decode('utf-8') == 'exit':
                break
            sock.send(('Hello, %s!' % data.decode('utf-8')).encode('utf-8'))
        sock.close()
        print('Connection from %s:%s closed.' % addr)
    
    
    if __name__ == '__main__':
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.bind(('localhost', 9999))
        s.listen(5)
        print('Waiting for connecting ...')
    # while True:
        sock, addr = s.accept()
        t = threading.Thread(target=tcplink, args=(sock, addr))
        t.start()
    '''
    
    
    # 服务端UDP
    if __name__ == '__main__':
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        # 绑定端口:
        s.bind(('127.0.0.1', 9999))
        print('Bind UDP on 9999...')
        while True:
            # 接收数据:
            data, addr = s.recvfrom(1024)
            print('Received from %s:%s.' % addr)
            s.sendto(b'Hello, %s!' % data, addr)

     

    # 客户端代码

    import socket
    
    # tcp连接
    # s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # s.connect(('127.0.0.1', 9999))
    # print(s.recv(1024).decode('utf-8'))
    # for data in [b'Micheal', b'Tracy', b'Sarah']:
    #     s.send(data)
    #     print(s.recv(1024).decode('utf-8'))
    # s.send(b'exit')
    # s.close()
    #
    
    
    # udp连接
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    for data in [b'Michael', b'Tracy', b'Sarah']:
        # 发送数据:
        s.sendto(data, ('127.0.0.1', 9999))
        # 接收数据:
        print(s.recv(1024).decode('utf-8'))
    s.close()

      

      

  • 相关阅读:
    Git(五):Git分支管理策略
    Git(四):Git远程操作详解
    Git(三):Git 使用规范流程
    Git(二):常用 Git 命令清单
    Git(一):Eclipse中配置Git
    (一)Spring’s MVC Architecture
    Maven(九)”编码 gbk 的不可映射字符“ 问题解决方案
    Maven(八) Maven项目和testng结合应用
    Maven(七) maven 常用命令
    Maven(四-2) Maven pom.xml 配置详解
  • 原文地址:https://www.cnblogs.com/ceshixuexi/p/9082526.html
Copyright © 2011-2022 走看看