关于网络编程我们首先了解下SOCKET。socket(简称套接字),是进程之间通信的一个工具,负责进程之间的网络数据传输,好比数据的搬运工。好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行,进程之间想要进行网络通信需要基于这个 socket。
1.服务端的创建流程
(1)在python中首先导包,创建一个套接字对象。
import socket #导包
service_host = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
(2)设置段端口号复用,让程序退出端口号立即释放
service_host.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,True)
(3) 绑定端口号
service_host.bind(('', 9090)) # ip地址与端口号以元组形式传入
(4)设置监听
service_host.listen(128)
(5)等待客户端连接请求
client, ip_port = service_host.accept()
(6)接受客户端请求信息
recv_message = client.recv(1024) # 设置客户端接受数据,并设置最大字节
recv_message_new = recv_message.decode('utf-8') # 字节流进行转码
print('客户端消息:', recv_message_new) #打印消息
(7)发送消息
send_message =input('请输入:')
client.send(send_message.encode('utf-8')) #发送数据需要进行编码
(8)关闭套接字
client.close()
service_host.close()
2.客户端创建流程
(1)创建一个套接字对象
import socket #导包
xiaoming = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
(2) 与服务端建立连接
xiaoming.connect(('----------', 9090)) # 以元组的形式传入服务器地址和端口号
(3)发送数据
information =input('请输入:')
xiaoming.send(('xiaoming:' + information).encode('utf-8')) # 需要进行转码
(4)接收数据
recv_infor = xiaoming.recv(1024)
print(recv_infor .decode('utf-8')) # 查看需要进行转码
(5)关闭套接字
xiaoming.close()