zoukankan      html  css  js  c++  java
  • python之路----TCP与UDP

    TCP

    import socket
    #tcp协议
    sk = socket.socket()     # 买手机 创建一个socket对象
    sk.bind(('127.0.0.1',8080))  # 给server端绑定一个ip和端口
    sk.listen()              # py3.4
    while True:
        conn,addr = sk.accept()  # 获取到一个客户端的连接, 已经完成了三次握手建立了一个连接
                                 # 阻塞
        while True:
            msg = conn.recv(1024).decode('utf-8')    # 阻塞,直到收到一个客户端发来的消息
            print(msg)
            if msg == 'bye':break
            info = input('>>>')
            if info == 'bye':
                conn.send(b'bye')
                break
            conn.send(info.encode('utf-8'))     # 发消息
        conn.close()             # 关闭连接
    sk.close()               # 关闭socket对象,如果不关闭,还能继续接收
    # server client1 建立了长连接
    # client2
    server
    import socket
    sk = socket.socket()
    sk.connect(('127.0.0.1',8080))
    while True:
        msg = input('>>>')
        if msg == 'bye':
            sk.send(b'bye')
            break
        sk.send(msg.encode('utf-8'))
        ret = sk.recv(1024).decode('utf-8')
        if ret == 'bye':break
        print(ret)
    sk.close()
    client
    import socket
    sk = socket.socket()
    sk.connect(('127.0.0.1',8080))
    while True:
        msg = input('client2:>>>')
        if msg == 'bye':
            sk.send(b'bye')
            break
        sk.send(('client2 :'+msg).encode('utf-8'))
        ret = sk.recv(1024).decode('utf-8')
        if ret == 'bye':break
        print(ret)
    sk.close()
    client2

    UDP

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)  #DGRAM datagram
    sk.bind(('127.0.0.1',8080))       #只有服务端有的
    
    msg,addr = sk.recvfrom(1024)
    print(msg.decode('utf-8'))
    sk.sendto(b'bye',addr)
    
    sk.close()
    server
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ('127.0.0.1',8080)
    
    sk.sendto(b'hello',ip_port)
    ret,addr = sk.recvfrom(1024)
    print(ret.decode('utf-8'))
    
    sk.close()
    client

    UDP协议实现qq聊天

    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(('127.0.0.1',8080))
    while True:
        msg,addr = sk.recvfrom(1024)
        print(addr)
        print(msg.decode('utf-8'))
        info = input('>>>').encode('utf-8')
        sk.sendto(info,addr)
    
    sk.close()
    server
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ('127.0.0.1',8080)
    while True:
        info = input('tiger :')
        info = ('33[34m来自tiger的消息 :%s33[0m'%info).encode('utf-8')
        sk.sendto(info,ip_port)
        msg,addr = sk.recvfrom(1024)
        print(msg.decode('utf-8'))
    
    sk.close()
    client1
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ('127.0.0.1',8080)
    while True:
        info = input('二哥 :')
        info = ('33[32m来自二哥的消息 :%s33[0m'%info).encode('utf-8')
        sk.sendto(info,ip_port)
        msg,addr = sk.recvfrom(1024)
        print(msg.decode('utf-8'))
    
    sk.close()
    client2

    UDP实现系统时间同步

    # 提供服务
    # 接收信息 时间的格式
    # 将我的时间转换成 接受到的格式
    # 发回给客户端

    import time
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(('127.0.0.1',8090))
    while True:
        strf,addr = sk.recvfrom(1024)
        strf = strf.decode('utf-8')
        res = time.strftime(strf).encode('utf-8')
        sk.sendto(res,addr)
    sk.close()
    server
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    addr = ('127.0.0.1',8090)
    info = input('>>>').encode('utf-8')
    sk.sendto(info,addr)
    ret,addr = sk.recvfrom(1024)
    print(ret.decode('utf-8'))
    
    sk.close()
    client
  • 相关阅读:
    extern--C#调用C++等其他非托管代码
    unhandledException详细介绍
    MySql如何安装?
    Mindoc搭建流程
    反射_IsDefined判断方法上有自定义的标签
    WebApi_返回Post格式数据
    编码
    IP地址与MAC地址
    Tcp/Ip:Telnet指令
    create-react-app使用的问题
  • 原文地址:https://www.cnblogs.com/TheLand/p/8360093.html
Copyright © 2011-2022 走看看