提高套接字传输的速度



我正在尝试使用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(( 来发送每秒不断变化的数据。但是使用当前代码,数据传输的速度非常低,因此大多数数据都不会传输/跳过。有没有办法提高传输速度?我真的要以更快的速度发送数据。我是否遗漏了某些内容,或者我的代码有问题?

编辑-1 按照@JohanL的建议,每次我想传输数据时都会创建一个新的连接,我保留了一个开放套接字。这确实提高了速度,但我真的需要它接近瞬时。

新客户端代码:

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())

将袜子更改为:

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

做到了。谢谢大家的帮助。

最新更新