一个简单的服务端与客户端TCP通信

该博客展示了如何使用Python实现一个简单的TCP服务端和客户端通信。服务端通过socket监听特定IP和端口,接受客户端连接,接收并回传消息。客户端则连接服务端,发送用户输入的消息,并显示服务端的回复。整个过程涉及TCP的三次握手及数据的编码解码。
摘要由CSDN通过智能技术生成

一个简单的服务端与客户端TCP通信

服务端代码

from socket import *

ip_port = ("10.33.0.75", 8000)          #定义创建连接的IP地址与IP端口
back_log = 5                            #设置连接池为2
buffer_size = 1024                      #设置每次发送与接收的数据大小

tcp_sever = socket(AF_INET, SOCK_STREAM)    #给予socket.STREAM方式的通信就是基于流的方式进行通信,也就是tcp通信方式
tcp_sever.bind(ip_port)                     #建立连接端口
tcp_sever.listen(back_log)                  #listen中的back_log表示可以等待的访问数

while True:                             #当客户端端口之后,重复实现建立连接
    print("服务起开始运行")              #提示服务器运行
    conn,addr = tcp_sever.accept()       #conn表示等待的接收的端口号,addr表示等待接收的ip地址,等待客户端连接,也就是在在这里也就实现三次握手
    print("双向链接是",conn)
    print("客户端地址",addr)

    while True:             #实现循环接收与发送消息
        try:                #如果客户端异常退出,服务端将不至于发生错误而退出
            data = conn.recv(buffer_size)        #接收到客服端的数据赋值给data,buffer_size表示一次性接收数据的大小
            print("客户端发来的消息是:", data.decode("utf-8"))
            conn.send(data.upper())             #将接收客户端的数据返回给客户端
        except Exception:
            break;
    conn.close()                                #关闭连接

tcp_sever.close()                               #关闭socket流

注意:socket编程在发送与接受数据的时候是以二进制形式传输的,所有发送与接收的时候需要对要发送的数据和接受的数据进行分别的编码和解码。

客户端代码

from socket import *

ip_port = ("10.33.0.75", 8000)
back_log = 5
buffer_size = 1024

tcp_client = socket(AF_INET, SOCK_STREAM)       #创建用户
tcp_client.connect(ip_port)                     #建立连接

while True:
    msg = input(">>:").strip()                  #读取用户输入的数据
    if msg == "quit()":                         #如果用户输入的quit()将退出程序
        break;
    tcp_client.send(msg.encode("utf-8"))        #向服务端发送消息
    print("客户端发送消息")
    data = tcp_client.recv(buffer_size)         #等待并接收服务端返回的消息
    print("接收到服务端发送的消息是:", data.decode("utf-8"))    #打印服务端返回的消息内容

tcp_client.close()                              #关闭连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值