提高套接字传输速度

时间:2018-10-14 22:36:17

标签: python linux windows visual-studio sockets

我正在尝试使用python的套接字库将数据从Windows PC(客户端)传输到Linux PC(服务器)。

我对服务器和客户端有以下代码:

客户:

我的主程序使用以下功能来发送数据。例如send_message(data.encode());其中“数据”每秒变化一次,并且为int格式。

def send_message(message):

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # Connect the socket to the port on the server
    # given by the caller
    server_address = ('10.46.24.858' 10000)
    #print('connecting to {} port {}'.format(*server_address))
    sock.connect(server_address)    
    sock.sendall(message)   
    print(message)

服务器:

def main():
 sock= socket.socket.AF_INET,socket.SOCK_STREAM)
 server_address = ('10.46.24.858', 10000)
 sock.bind(server_address)
 sock.listen(1)
 while True:
     connection,clientaddress = sock.accept()
     data = connection.recv(16)
     print('recieved,%s',data)

if __name__ == "__main__":
 main()

我的主程序使用客户端函数send_message()发送每秒不断变化的数据。但是使用当前代码,数据传输的速度非常低,因此大多数数据都不会被传输/跳过。有什么办法可以提高传输速度?我真的以更快的速度发送数据。我是否缺少代码或代码有问题?

EDIT-1 遵循@JohanL的建议,而不是每次要传输数据时都创建新的连接,而是保留了一个Open套接字。这确实提高了速度,但我确实需要接近瞬时。

新的客户端代码:

def main(): 
   sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # Connect the socket to the port on the server
    # given by the caller
    server_address = ('10.46.24.858' 10000)
    #print('connecting to {} port {}'.format(*server_address))
    sock.connect(server_address

   # some algorithm with outputs 'data'
     sock.sendall(data.encode())

1 个答案:

答案 0 :(得分:0)

将袜子更改为:

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

成功了。谢谢大家的帮助。