|
13 | 13 | import time
|
14 | 14 | import traceback
|
15 | 15 | from collections import deque
|
| 16 | +import os |
16 | 17 |
|
17 | 18 | import can
|
18 | 19 |
|
@@ -79,6 +80,7 @@ def __init__(self, channel, host, port, can_filters=None, **kwargs):
|
79 | 80 | self.__host = host
|
80 | 81 | self.__port = port
|
81 | 82 | self.__socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
| 83 | + self.__socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) |
82 | 84 | self.__message_buffer = deque()
|
83 | 85 | self.__receive_buffer = "" # i know string is not the most efficient here
|
84 | 86 | self.channel = channel
|
@@ -120,6 +122,8 @@ def _recv_internal(self, timeout):
|
120 | 122 | ascii_msg = self.__socket.recv(1024).decode(
|
121 | 123 | "ascii"
|
122 | 124 | ) # may contain multiple messages
|
| 125 | + if os.name != "nt": |
| 126 | + self.__socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_QUICKACK, 1) |
123 | 127 | self.__receive_buffer += ascii_msg
|
124 | 128 | log.debug(f"Received Ascii Message: {ascii_msg}")
|
125 | 129 | buffer_view = self.__receive_buffer
|
@@ -173,9 +177,13 @@ def _recv_internal(self, timeout):
|
173 | 177 | def _tcp_send(self, msg: str):
|
174 | 178 | log.debug(f"Sending TCP Message: '{msg}'")
|
175 | 179 | self.__socket.sendall(msg.encode("ascii"))
|
| 180 | + if os.name != "nt": |
| 181 | + self.__socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_QUICKACK, 1) |
176 | 182 |
|
177 | 183 | def _expect_msg(self, msg):
|
178 | 184 | ascii_msg = self.__socket.recv(256).decode("ascii")
|
| 185 | + if os.name != "nt": |
| 186 | + self.__socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_QUICKACK, 1) |
179 | 187 | if not ascii_msg == msg:
|
180 | 188 | raise can.CanError(f"{msg} message expected!")
|
181 | 189 |
|
|
0 commit comments