python socket编程

socket

socket(套接字)是进程间通信的工具,好比现实生活中的插座,所有家电想要工作都是基于插座进行,进程之间想要进行网络通信需要socket

socket负责进程之间的网络数据传输,好比数据的搬运工

image-20240927154726240

2个进程之间通过socket进行互相通讯,就必须有服务端和客户端

socket服务端:等待其他进程的连接、可接收发来的消息、可以回复消息

socket客户端:主动连接服务端、可以发送消息、可以接收回复

socket服务端编程

主要分为以下几步:

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

#2.绑定socket_server到指定ip和地址
socket_server.bind((host,port))

#3.服务端开始监听端口
socket_server.listen(backlog)
#backlog为int整数,表示允许的连接数量,超过会等待

#4.接收客户端连接,获得连接对象
conn,address = socket_server.accept()
print(f"接收到客户端连接,连接来自:{address}")
"""accept方法是阻塞方法,如果没有连接,会卡在这里"""

#5.客户端连接后,通过recv方法,接收客户端发来的消息
while True:
    data = conn.recv(1024).decode("utf-8")
    #recv方法的返回值是字节数组(bytes),可以通过decode使用utf-8解码为字符串
    #recv方法的传参是buffsize,缓冲区大小,一般设置为1024
    if data == 'exit':
        break
    print("接收到发来的消息:",data)
    
	#6.通过conn(客户端当次连接对象),调用send方法可以回复消息
    conn.send("你好".encode("utf-8"))

#7.conn和socket_server对象调用close方法,关闭连接
conn.close()
socket_server.close()

socket客户端编程

主要分为以下几个步骤:

# 1.创建socket对象
import socket

socket_client = socket.socket()
# 2.连接到服务端
socket_client.connect(("localhost", 8888))
# 3.发送消息
while True:
    send_msg = input("请输入要发送的消息:")
    if send_msg == "exit":
        break
    socket_client.send(send_msg.encode("utf-8"))
    # 4.接收服务端返回的消息
    recv_data = socket_client.recv(1024)
    print("服务端回复的消息为:", recv_data.decode("utf-8"))

# 5.关闭连接
socket_client.close()

完整代码

server.py

# 1.创建socket对象
import socket

socket_server = socket.socket()

# 2.绑定socket_server到指定ip和地址
socket_server.bind(("localhost", 8888))

# 3.服务端开始监听端口
socket_server.listen(1)
# backlog为int整数,表示允许的连接数量,超过会等待

# 4.接收客户端连接,获得连接对象
conn, address = socket_server.accept()
print(f"接收到客户端连接,连接来自:{address}")
"""accept方法是阻塞方法,如果没有连接,会卡在这里"""

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

    # 6.通过conn(客户端当次连接对象),调用send方法可以回复消息
    send_str = input("回复客户端:").encode("utf-8")
    conn.send(send_str)

# 7.conn和socket_server对象调用close方法,关闭连接
conn.close()
socket_server.close()

client.py

# 1.创建socket对象
import socket

socket_client = socket.socket()
# 2.连接到服务端
socket_client.connect(("localhost", 8888))
# 3.发送消息
while True:
    send_msg = input("请输入要发送的消息:")
    if send_msg == "exit":
        break
    socket_client.send(send_msg.encode("utf-8"))
    # 4.接收服务端返回的消息
    recv_data = socket_client.recv(1024)
    print("服务端回复的消息为:", recv_data.decode("utf-8"))

# 5.关闭连接
socket_client.close()

image-20240927162430509

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值