TCP编程中的客户端与服务端的通信实现

简介: TCP编程中的客户端与服务端的通信实现

客户端

from socket import *
from threading import Thread
#客户端
def rece_data():
    while 1:
        # 接受服务端消息
        rece_data = client_socket.recv(1024)
        rece_content = rece_data.decode('utf-8')
        print(f"服务端说:{rece_content}")
        if rece_content == 'end':
            print('结束接受消息')
            break
def send_data():
    while 1:
        # 给服务端发消息
        msg = input('>')
        client_socket.send(msg.encode('utf-8'))
        if msg == 'end':
            break
if __name__ == '__main__':
    client_socket = socket(AF_INET, SOCK_STREAM)
    client_socket.connect(('127.0.0.1', 8899))
    t1 = Thread(target=rece_data)
    t2 = Thread(target=send_data)
    t1.start()
    t2.start()
    t1.join()
    t2.join()
    client_socket.close()

服务端

from socket import *
from threading import Thread
#服务端
def rece_data():
    while 1:
        rece_data = client_socket.recv(1024)
        rece_content = rece_data.decode('utf-8')
        print(f"客户端说:{rece_content},from{client_info}")
        if rece_content == 'end':
            print('结束接受消息')
            break
def send_data():
    while 1:
        msg = input('>')
        client_socket.send(msg.encode('utf-8'))
        if msg == 'end':
            # print('结束接受消息')
            break
if __name__ == '__main__':
    server_socket = socket(AF_INET, SOCK_STREAM)  # 创建TCP套接字
    server_socket.bind(('127.0.0.1', 8899))  # 本机监听8899端口
    server_socket.listen(5)
    print('等待接受数据!')
    client_socket, client_info = server_socket.accept()
    print('一个客户端建立链接成功')
    t1 = Thread(target=rece_data)
    t2 = Thread(target=send_data)
    t1.start()
    t2.start()
    t1.join()
    t2.join()
    client_socket.close()
    server_socket.close()

ps:要运行以上两个文件,必须先运行服务端的文件,再运行客户端的文件才能连接到服务端

目录
相关文章
|
网络协议 物联网 开发者
NB-IoT 通信之 TCP 收发数据 | 学习笔记
快速学习 NB-IoT 通信之 TCP 收发数据
878 0
NB-IoT 通信之 TCP 收发数据 | 学习笔记
|
3天前
|
网络协议 安全 Java
Java网络编程入门指南:TCP/IP协议与Socket通信
Java网络编程入门指南:TCP/IP协议与Socket通信
75 1
|
7月前
|
SQL 网络协议 前端开发
🚀超级简单的图解TCP/IP,看不懂来打我:OSI模型与通信示例🚀
🚀超级简单的图解TCP/IP,看不懂来打我:OSI模型与通信示例🚀
|
监控 网络协议 安全
一文了解HTTP、HTTPS、TCP、UDP、Websocket(论点:概念、通信流程、异同点、应用领域)
一文了解HTTP、HTTPS、TCP、UDP、Websocket(论点:概念、通信流程、异同点、应用领域)
|
网络协议
海思3559万能平台搭建:TCP客户端网口编程
海思3559万能平台搭建:TCP客户端网口编程
122 0
|
网络协议 Java
Java BIO tcp服务端向客户端消息群发代码教程实战
java BIO tcp服务端向客户端消息群发代码教程实战
128 0
Java BIO tcp服务端向客户端消息群发代码教程实战
|
网络协议
Netty实现TCP通信
Netty实现TCP通信
|
缓存 网络协议 Java
在项目中使用Curator的Java 客户端搭建后进行长TCP连接和TCP权限配置【Zookeeper】
在项目中使用Curator的Java 客户端搭建后进行长TCP连接和TCP权限配置【Zookeeper】
260 0
在项目中使用Curator的Java 客户端搭建后进行长TCP连接和TCP权限配置【Zookeeper】
|
网络协议 Unix Linux
linux网络编程(三) TCP通信时序与多进程/线程并发服务器的编写
linux网络编程(三) TCP通信时序与多进程/线程并发服务器的编写
285 0
linux网络编程(三) TCP通信时序与多进程/线程并发服务器的编写
|
网络协议 Linux 网络性能优化
Linux网络原理及编程(6)——第十六节 TCP可靠性保证的原理
你在应用层上想要发送一个信息,但是我在底层可能是通过发送多次、甚至有触发了超时重传等等。而站在用户的角度呢,你不用去管它,我传输层不管怎么发,反正最终把你的数据发出去就可以了。也就是说,应用层的传输和底层传输层的并不是一对一、一一对应的关系。
146 0
Linux网络原理及编程(6)——第十六节 TCP可靠性保证的原理