python tcp传字符串

使用tcp进行字符串网络收发。主要分为两个部分:

1、服务端

step1、创建socket、绑定IP和端口号,开启监听;

step2、等待客户端建立socket连接;

step3、接收的字符串流,显示;也可主动发送数据给客户端;

step4、关闭socket通道、关闭server;

2、客户端

step1、创建基于TCP的socket;

step2、连接的IP地址以及端口;

step3、发送,必须用二进制进行发送消息;

step4、关闭连接;

服务端逻辑,serve.py:

#!/usr/bin/env python
# coding: utf-8
import socket

def main():
    # step1、创建socket、绑定IP和端口号,开启监听
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind(("127.0.0.1", 8888))
    server.listen(5)  # 服务端可以接收N个链接,但是只能同一时刻回应五个请求.

    # step2、等待客户端建立socket连接
    conn, addr = server.accept()  # 阻塞(等待客户端的连接)
    print("conn & addr:", conn, addr)

    # step3、接收的字符串流,显示
    from_client_data = conn.recv(1024)  # 至多接收1024个字节 阻塞,超过1024分批接收
    print("来自客户端的消息: %s" % from_client_data)  # 打印客户端发送的内容

    # 也可主动发送数据给客户端
    conn.send(from_client_data.upper())  # 给客户端发送内容

    conn.close()  # 关闭socket通道
    server.close()  # 关闭server

if __name__ == "__main__":
    main()

客户端逻辑,client.py:

#!/usr/bin/env python
# coding: utf-8
import socket

def main():
    # step1、创建基于TCP的socket
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # step2、连接的IP地址以及端口
    client.connect(("127.0.0.1", 8888))  # 必须是元组

    # step3、发送,必须用二进制进行发送消息
    date = input("请输入:")
    client.send(date.encode("utf-8"))

    # 接收服务端发送的内容,允许接收服务端至多1024字节
    from_server_date = client.recv(1024)
    print("来自服务端的消息: %s" % from_server_date)

    # step4、关闭连接
    client.close()

if __name__ == "__main__":
    main()

结果:

python serve.py
python client.py

客户端
    请输入:123 
    来自服务端的消息: b'123'
服务端:
    conn & addr: <socket.socket fd=324, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8888), raddr=('127.0.0.1', 54520)> ('127.0.0.1', 54520)
    来自客户端的消息: b'123'

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jingbo1801

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值