0
您好,我有多個系統通過使用TCP連接的消息進行通信。TCP套接字無法在突發中發送消息
我的發送功能如下所示
def _send(self, message, dest):
self.sendLock.acquire()
message = pickle.dumps(message)
#sending length
message_length = len(message)
self.outChan[dest].send('<MESSAGELENGTH>%s</MESSAGELENGTH>'
% str(message_length))
for message_i in range(0, message_length, 1024):
self.outChan[dest].send(message[:1024])
message = message[1024:]
self.sendLock.release()
和接收線程是這樣的:該消息是從self.rec確認消息讀取發送給發件人
def readlines(self, sock):
while True:
msg = ''
opTag = '<MESSAGELENGTH>'
clTag = '</MESSAGELENGTH>'
while not all(tag in msg for tag in (opTag, clTag)):
msg = sock.recv(1024)
msglen = int(msg.split(clTag)[0].split(opTag)[1])
msg = msg.split(clTag)[1]
while len(msg) < msglen:
msg += sock.recv(msglen-len(msg))
self.rec.put(pickle.loads(msg))
後。
我已經實現了我自己的緩衝區來控制網絡中的流量。在任何時候,我都會發送幾乎沒有收到確認的MAX_BUFFER_SIZE消息。
下面是問題:程序啓動時,它會發送MAX_BUFFER_SIZE消息而不等待確認。但是隻有少數這些MAX_BUFFER_SIZE消息被接收。
在其中一個MAX_BUFFER_SIZE = 5的仿真中,共發送了100條消息,未接收到m2,m3和m4。所有其他消息都已收到(按照它們發送的順序)。
我懷疑錯誤是在最初的發送突發,但我無法找出確切的問題。
它的工作原理。謝謝 :) – user1396267 2014-09-25 11:28:43