浅谈自己理解的socket(2)

来源:互联网 发布:淘宝买大麻暗语 编辑:程序博客网 时间:2024/06/07 12:47

一、我们在启动服务器端之后,由于只有一个进程可以为客户端提供服务,当有多个客户端链接j进来的时候,服务器将无法为每个客户端提供服务。

我们解决的方法有以下一种办法:

1、进来一个客户端链接,启动一个子进程为其服务。

2、进来一个客户端链接,启动一个子线程为其服务。

3、只有一个主进程,就排队为客户端服务,即进来一个客户端,建立一个socket套接字,与该链接进行数据交换,直到该服务结束,关闭链接;当后续链接进来时,再一次建立socket套接字。

二、下面我们将给出上述第三种处理方式

1、服务器端代码

#TCP/IP的服务器端import socketimport os#IP and portserver_address = ('localhost', 6666)#create a socketserver_socket = socket.socket()#bind to the address and listen the connectionserver_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 socketconn_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()

三、关于的多进程与多线程的处理请关注后续的博客

原创粉丝点击