Python中socket的基础使用

socket(简称 套接字)是进程之间通信的一个工具,进程之间想要进行网络通信需要socket
2个进程之间通过socket进行相互通信,就必须有服务端和客户端
socket服务端:等待其它进程的连接、可接受发来的信息、可以回复信息
socket客户端:主动连接服务端、可以发送信息、可以接收回复

socket服务端编程:

# 导入socket模块
import socket

# 创建socket对象
socket_server = socket.socket()

# 绑定socket_server到指定IP和端口
socket_server.bind(("localhost", 8888))

# 服务端开始监听端口,backlog为int整数,表示允许的连接数量,超出的会等待,可以不填,不填会自动设置一个合理值
backlog = 1
socket_server.listen(backlog)

# 接收客户端连接,获得连接对象
# accept方法是阻塞方法,如果没有连接,会卡在当前这一行不向下执行代码
# accept返回的是一个二元元组,可以使用上述形式,用两个变量接收二元元组的2个元素
conn, address = socket_server.accept()
print(f"接收到客户端连接,连接来自:{address}")

# 客户端连接后,通过recv方法,接收客户端发送的消息
while True:
    # recv方法的返回值是字节数组(Bytes),可以通过decode使用UTF-8解码为字符串
    # recv方法的传参是buffsize,缓冲区大小,一般设置为1024即可
    data = conn.recv(1024).decode("UTF-8")
    print(f"接受到客户端发来的数据:{data}")

    # 通过conn(客户端当此连接对象),调用send方法可以回复消息
    send_data = input("请输入你要回复的消息:")
    if send_data == 'exit':
        break
    conn.send(send_data.encode("UTF-8"))

# conn(客户端当此连接对象)和socket_server对象调用close方法,关闭连接
conn.close()
socket_server.close()

socket客户端编程:

# 导入socket模块
import socket

# 创建socket对象
socket_client = socket.socket()

# 连接到服务端
socket_client.connect(("localhost", 8888))

# 发送消息
while True:
    send_msg = input("请输入要发送的消息:")
    if send_msg == 'exit':
        break
    # 消息需要编码为字节数组(UTF-8编码)
    socket_client.send(send_msg.encode("UTF-8"))

    # 接收消息,缓冲区大小一般设为1024即可,recv方法是阻塞式的,即不接收到返回,就卡在这里等待
    recv_data = socket_client.recv(1024)
    # 接收的消息需要通过UTF-8解码为字符串
    print(f"服务端回复消息为:{recv_data.decode('UTF-8')}")

# 关闭连接
socket_client.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值