zoukankan      html  css  js  c++  java
  • socket 第一课

    基于TCP的socket服务

    server.py

    import socket
    
    sk = socket.socket()
    sk.bind(("127.0.0.1",8080))
    sk.listen()
    
    conn,addr = sk.accept()
    
    while 1:
    
        ret = conn.recv(1024).decode('utf-8')
        if 'bye' in ret:
            conn.send(b'byebye~~')
            break
        print(ret)
    
        info = input('-->: ')
        conn.send(bytes(info,encoding = 'utf-8'))
    
    conn.close()
    sk.close()

    client.py

    import socket
    
    sk = socket.socket()
    
    sk.connect(("127.0.0.1",8080))
    
    while 1:
    
    
        info = input('-->: ')
        sk.send(bytes(info,encoding = 'utf-8',))
    
        ret = sk.recv(1024).decode('utf-8')
        if 'bye' in ret:
            break
        print(ret)
    
    sk.close()

    基于UDP的socket服务

    server.py

    import socket
    
    sk = socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(('127.0.0.1',8080))
    msg, addr = sk.recvfrom(1024)
    
    print(msg.decode('utf-8'))
    sk.sendto(b'byebye~client', addr)
    
    sk.close()

    client.py

    import socket
    
    sk = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ('127.0.0.1', 8080)
    
    sk.sendto(b'hello server', ip_port)
    ret, addr = sk.recvfrom(1024)
    print(ret.decode('utf-8'))
    
    sk.close()

    udp的server 不需要进行监听,也不需要建立连接

    在启动服务之后只能被动的等待client发送消息

    client发送消息的同时还会自带地址信息

    消息回复的时候不仅需要发送消息,还要把自己的地址发送过去

    tcp相反

  • 相关阅读:
    Servlet介绍(一)
    iOS Dev (50)用代码实现图片加圆角
    Codeforces Round #265 (Div. 2) D. Restore Cube 立方体推断
    JVM:垃圾回收机制和调优手段
    Memcachedclient-XMemcached使用
    JVM中类的卸载机制
    血型统计
    iOS 事件传递及响应过程
    java 对象参数去空格方式
    spring aop 一个挡板例子
  • 原文地址:https://www.cnblogs.com/Hxx0916/p/9713501.html
Copyright © 2011-2022 走看看