服务端开发步骤
1、创建服务端socket套接字,用于接受客户端的连接请求。
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.AF_INET:表示使用IPV4的地址
socket.SOCK_STREAM:表示使用TCP协议
2、通过socket套接字设置服务端程序的IP和端口
server_socket.bind(('IP地址', 端口号))
3、通过 socket 设置监听:设置同一时间最多支持多少个客户端向服务端发起连接请求
server_socket.listen(n)
n:代表同一时间最多支持n个客户端向服务端发起连接请求
4 、服务端等待接收客户端的连接请求
service_client_socket, ip_addr = server_socket.accept()
有两个返回值
service_client_socket:也是一个 socket 套接字,负责和连接的客户端进行通信(数据的接收和发送)
ip_addr:客户端的IP和端口号
5、和客户端之间进行数据的接收和发送
recv_msg = service_client_socket.recv(n) # bytes
print('客户端发送的消息为:', recv_msg.decode())
先接收客户端发送的数据
n:代表一次 recv 最多接收 n个字节
注意:当客户端没有发送数据过来时,recv也会阻塞等待
send_msg = input('请输入给客户端回应的消息:')
service_client_socket.send(send_msg.encode())
再给客户端发送一个回应的数据
6、关闭服务端的socket套接字
service_client_socket.close()
server_socket.close()
服务端开发有六步,可以分为准备阶段、运行阶段、和最后的关闭。
准备阶段为:
创建socket套接字,里面有两个参数socket.AF_INET, socket.SOCK_STREAM,分别是IP地址和TCp协议。
第二步是通过套接字设置服务端程序的IP地址
第三步是通过socket监听,设置可以统一时间有多少设备可以连接。
第四步就可以准备接受客服端发送的消息了,这一步有两个返回值分别用service_client_socket和ip_addr接受。
然后是运行阶段:
运行阶段就是接受客户端消息和回客户端消息。
最后就是关闭socket套接字,要关闭的有service_client_socket.close()和server_socket.close()。
客户端开发步骤
1、创建一个客户端的socket套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
2 、通过客户端的 socket 套接字来连接服务端的 socket
client_socket.connect(('IPaddr',n))
3、 和服务器之间进行数据接受和发送
先给服务端发送数据
send_msg = input('请输入给服务端发送的消息:')
client_socket.send(send_msg.encode())
再接收服务端回应的数据
recv_msg = client_socket.recv(1024)
print('服务端回应的消息为:', recv_msg.decode())
4 、关闭socket套接字
client_socket.close()
客户端开发相对来说步骤较少,但是与服务端一样也可以分为三步, 准备、运行、关闭
创建套接字、通过套接字连接服务端的socket
运行与 服务端相同和服务器之间进行数据的接受与发送。
最后依旧是关闭套接字。
其中还有一个重要点 :
由于客户端和服务端互相发送的数据类型是比特形,所以我们要用到str和bytes之间的类型转换。
变量名 = 比特数据类型.decodes() ----->>bytes转化为str
变量名 = 字符串数据类型.encodes() ----->>str转化为bytes