一、我们在启动服务器端之后,由于只有一个进程可以为客户端提供服务,当有多个客户端链接j进来的时候,服务器将无法为每个客户端提供服务。
我们解决的方法有以下一种办法:
1、进来一个客户端链接,启动一个子进程为其服务。
2、进来一个客户端链接,启动一个子线程为其服务。
3、只有一个主进程,就排队为客户端服务,即进来一个客户端,建立一个socket套接字,与该链接进行数据交换,直到该服务结束,关闭链接;当后续链接进来时,再一次建立socket套接字。
二、下面我们将给出上述第三种处理方式
1、服务器端代码
#TCP/IP的服务器端
import socket
import os
#IP and port
server_address = ('localhost', 6666)
#create a socket
server_socket = socket.socket()
#bind to the address and listen the connection
server_socket.bind(server_address)
server_socket.listen(5)
while True:
conn, addr = server_socket.accept()
print('a new connection from', addr)
while True:
data = conn.recv(1024)
if not data:
break
print('the length of received message is',len(data), 'bytes')
#change all letters to uppercase
conn.send(data.upper())
conn.close()
server_socket.close()
解释:第二个while循环,为客户端提供数据交互,该循环结束后,关闭掉与客户端的链接
2、客户端代码
#TCP/IP的客户端
import socket
conn_address = ('localhost', 6666)
# #create a socket
# client_socket = socket.socket()
for i in range(3):
# create a socket
client_socket = socket.socket()
#connect to the server_socket
client_socket.connect(conn_address)
client_socket.send(b'I will become stronger and stronger')
data = client_socket.recv(1024)
print(data)
client_socket.close()
三、关于的多进程与多线程的处理请关注后续的博客