美文网首页
Python3 & 基于TCP的方式实现客户端与服务器端互发消息

Python3 & 基于TCP的方式实现客户端与服务器端互发消息

作者: 乘风破浪的姐姐 | 来源:发表于2021-02-01 18:30 被阅读0次

    客户端

    '''
    1、导⼊ socket 模块
    2、创建socket 套接字
    3、建⽴tcp连接(和服务端建⽴连接)
    4、开始发送数据(到服务端)
    5、接收服务端发送的信息
    6、关闭套接字
    '''
    
    # 1、导⼊ socket 模块
    from socket import *
    
    
    # 2、创建socket 套接字
    tcp_socket_client = socket(AF_INET,SOCK_STREAM)
    # 3、建⽴tcp连接(和服务端建⽴连接)
    tcp_socket_client.connect(("192.168.100.117",8787))
    
    while True:
       #键盘输入要发送的内容
       msg = input("请输入要发送的内容:").strip()
       #判断发送的内容是否为空,为空则跳过
       if len(msg)==0:
           continue
        # 判断发送的内容是否为EXIT,是则退出客户端
       elif msg == 'exit':
           break
       else:
           # 4、发送数据(到服务端)
           tcp_socket_client.sendall(msg.encode("gbk"))
           # 5、接收服务端发送的信息
           recv_data = tcp_socket_client.recv(1024).decode("gbk")
           print("收到服务端回复:%s" % recv_data)
    
    
    # 6、关闭套接字
    tcp_socket_client.close()
    

    服务器:

    '''
    1. 导⼊ socket 模块
    2 socket创建⼀个套接字
    3. bind绑定ip和port
    4. listen使套接字变为可以被动链接
    5. accept等待客户端的链接
    6. recv/send接收发送数据
    7. 发送数据到客户端
    8. 中止与当前客户端的连接
    9. 关闭服务端套接字
    '''
    
    # 1. 导⼊ socket 模块
    from socket import *
    
    # 2. socket创建⼀个套接字
    tcp_socket_server = socket(AF_INET,SOCK_STREAM)
    # 3. bind绑定ip和port
    tcp_socket_server.bind(('',8787))
    # 4. listen使套接字变为可以被动链接
    tcp_socket_server.listen(128)
    
    # 循环目的:调用多次accept,从而为多个客户端服务
    while True:
       # 5. accept等待客户端的链接
       socket_client,ip_port = tcp_socket_server.accept()
       print("新的客户端来了:", ip_port)
       
       # 循环目的: 为同一个客户端 服务多次
       while True:
           # 6. recv接收客户端发送的数据
           recv_data = socket_client.recv(1024)
           #判断接收到客户端的信息是否为空,为空则退出
           if not recv_data:
               print("客户端连接断开")
               break
           else:
               print("收到客户端信息:%s" % recv_data.decode("gbk"))
    
           #从键盘输入回复给客户端的内容
           msg = input("请输入回复内容:").strip()
           # 判断发送的内容是否为空,为空则跳过
           if len(msg)==0:
               continue
           # 7. 发送数据到客户端
           socket_client.sendall(msg.encode("gbk"))
    
       # 8. 中止与当前客户端的连接
       socket_client.close()
    # 9. 关闭服务端套接字
    tcp_socket_server.close()
    
    image.png
    image.png

    相关文章

      网友评论

          本文标题:Python3 & 基于TCP的方式实现客户端与服务器端互发消息

          本文链接:https://www.haomeiwen.com/subject/axiqtltx.html