python socket 开发

  • socket 服务端开发
#socket 服务端开发
import socket

# 创建socket 对象
socket_server = socket.socket()
# 绑定ip 地址和端口
socket_server.bind(("localhost",8888))
# 监听端口
socket_server.listen(1)
# listen 方法内接收一个整数参数,表示接收的连接数量
#等待客户端连接
conn,address = socket_server.accept()
# accept()方法返回的是二元元组(连接对象,客户端地址信息)
# 可以通过 变量1,变量2 = socket_server.accept()的形式,直接接收二元元组内的两个元素
# accept()方法,是阻塞的方法,等待客户端的连接,如果没有连接,就卡在这一行不向下执行了
print(f"我接收到了客户端的连接,客户端的信息是: {address}")

while True:
    #接收客户端信息,要使用客户端和服务器的本次连接对象,而非socket_server 对象
    data = conn.recv(1024).decode("gbk")
    #recv 接收的参数是缓冲区大小,一般给1024 即可
    #recv方法的返回值是一个字节数组也是 bytest 对象,不是字符串,可以通过decode 方法通过UTF-8 编码,将字节数组转换为字符串对象
    print(f"客户端发来的信息是: {data}")
    #发送回复信息
    msg = input("请输入你要和客户端回复的消息:")
    if msg == "exit":
        break
    conn.send(msg.encode("gbk"))
#关闭连接
conn.close()
socket_server.close()

  • socket 客户端开发
"""
socket客户端开发
"""
import socket

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

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

while True:
    #发送消息
    msg = input("请输入要给服务段发送的信息: ")
    if msg == "exit":
        break
    socket_client.send(msg.encode("gbk"))

    #接收返回消息
    recv_data = socket_client.recv(1024)
    print(f"服务端回复的消息是: {recv_data.decode('gbk')}")
# 关闭连接
socket_client.close()



posted @ 2023-02-28 15:15  lixinliang  阅读(39)  评论(0编辑  收藏  举报