zoukankan      html  css  js  c++  java
  • 基于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才能向服务器发送消息。

  • 相关阅读:
    WEB服务器和应用服务器
    java中乱码问题
    面向对象的特征
    数据库中常见的需注意的问题
    String类
    网络编程
    C#泛型基础
    C#中sealed关键字的作用。
    C#自动属性优缺点分析
    TextView属性(转)
  • 原文地址:https://www.cnblogs.com/zhoajiahao/p/11090630.html
Copyright © 2011-2022 走看看