• 基于TCP协议的套接字编程


    基于TCP协议的套接字编程

    基于socket通信的内部算法,当发送的消息为空的时候,接收端不会收到消息,而发送端向下执行到recv,两端出于僵持状态。
    所以在发送端需要有个判断,如果发送的为空,则重新输入发送内容。

    socket

    socket是应用层与TCP/IP协议通信的中间软件抽象层,它是一组接口。

    基于TCP协议的套接字编程(循环)

    服务端

    import socket
    
    #买手机
    phone=socket.socket()
    
    #插入/绑定手机卡
    phone.bind(('127.0.0.1',8080))
    
    #开机
    phone.listen(5) #半连接池,限制的是请求数
    
    #等待电话连接
    print('start....')
    while True:
        conn,client_addr=phone.accept()
        print(conn)
        print('已经有一个连接建立成功',client_addr)
        
        while True:
            try:
                print('服务端正在收数据...')
                data=conn.recv(1024)
                if len(data)==0:break
                print('来自客户端的数据',data)
                conn.send(data.upper())
            except ConnectionResetError:
                break
        #挂掉电话连接
        conn.close()
    
    #关机
    phone.close()
                
    

    客户端1

    import socket
    
    #买手机
    phone=socket.socket()
    
    #拨电话
    phone.connect(('127.0.0.1',8080))
    
    #通信:发收消息
    while True:
        msg=input('>>>').strip()
        if len(msg)==0:continue
            phone.send(msg.encode('utf-8'))
            
            data=phone.recv(1024)
            print(data)
    #关闭
    phone.close()
    

    客户端2

    import socket
    
    #买手机
    phone=socket.socket()
    
    #拨电话
    phone.connect(('127.0.0.1',8080))
    
    #通信:发收消息
    while True:
        msg=input('>>>').strip()
        if len(msg)==0:continue
            phone.send(msg.encode('utf-8'))
            
            data=phone.recv(1024)
            print(data)
    #关闭
    phone.close()
    

    注意:必须先启动服务端,开启端口后才能再开启客户端。

    在没有并发通信时,客户端1和服务器建立连接,端口被占用,客户端2向服务器发送信息时,服务器收不到信息。只有当客户端1断开后,客户端2才能向服务器发送消息。

  • 相关阅读:
    Bluetooth篇 开发实例之八 匹配
    Bluetooth篇 开发实例之七 匹配&UUID
    Bluetooth篇 开发实例之六 蓝牙RSSI计算距离
    Bluetooth篇 开发实例之五 为什么无线信号(RSSI)是负值?
    Android Developer -- Bluetooth篇 开发实例之四 API详解
    Android Developer -- Bluetooth篇 开发实例之三 管理连接
    LoadRunner监控Window/Unix系统资源的配置
    性能测试方法对比
    HTTP状态代码含义
    百度输入法
  • 原文地址:https://www.cnblogs.com/zhoajiahao/p/11090630.html
Copyright © 2020-2023  润新知