学习python仅此一篇就够了(Socket网络编程)

网络编程

服务端开发

Socket

socket是进程之间通信一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行,进程之间想要进行网络通信需要socket。

客户端和服务端

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

socket客户端:主动连接服务端,可以发生消息,可以接收回复。

import socket

#创建socket对象
socket_server = socket.socket()
#绑定ip地址
socket_server.bind(("localhost", 8888))

#监听端口
socket_server.listen(1) #允许连接数量

#等待客户端连接
# result: tuple = socket_server.accept()
# conn = result[0] #客户端和服务端的连接对象
# address = result[1] #客户端地址信息

conn, address = socket_server.accept()

print(f"接收到了客户端的连接,客户端的信息是{address}")

while True:
    #接收客户信息
    DATA = conn.recv(1024).decode("UTF-8")
    #recv接收的参数是缓存区大小,一般给1024
    #recv方法的返回值是一个字节数组,不是字符串,提供编码将字节数组转化为字符串

    print(f"客户端发来的消息是{DATA}")

    #发送回复消息
    msg = input("请输入客户端回复的消息:") #将字符串编码为字节
    if msg == "exit":
        break
    conn.send(msg.encode("UTF-8"))

#关闭连接
conn.close()
socket_server.close()

学习python仅此一篇就够了(Socket网络编程)_第1张图片

 学习python仅此一篇就够了(Socket网络编程)_第2张图片

 

客户端开发

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("UTF-8"))
    #接收消息
    recv_ata = socket_client.recv(1024)
    print(f"服务端回复的消息是{recv_ata.decode('UTF-8')}")

#关闭连接
socket_client.close()

你可能感兴趣的:(python,学习,网络,python)