예제 #1
0
    def serve(ip, port):
        """ 支持多个客户端并发访问的服务端功能
        :param ip: string 服务端的ipv4地址
        :param port: int 服务端的端口
        """
        print(ip + ' ' + str(port))
        server = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
        server.bind((ip, port))
        server.listen(5)  # 设置最大的连接数

        while True:
            print('server waiting for data...')
            # 接收数据 socket 与 address
            # socket的绑定地址就是客户端, 所以可以直接通过这个socket对客户端发送信息
            cus, cus_address = server.accept()
            print('Successfully connected from: ', cus_address)

            emotion = cus.recv(1024).decode('gbk')
            song_url = str(Render.render_song(emotion))
            print('长度 = ' + str(len(song_url)) + '\n爬取到的连接 = ' + song_url)

            cus.send(str(
                len(song_url)).encode('gbk'))  # int数字转换为str, 再转换为bytes
            cus.send(song_url.encode('gbk'))
            cus.close()