我在使用python通过TCP发送紧急数据时遇到了一个问题。在
我已经研究过TCP头的结构和带外数据传输机制,但是我仍然不明白如何实现这一点。。在
简单服务器:
#default steps
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
conn,addr = s.accept()
...
#oob
conn.send('!',MSG_OOB)
...
简单客户端:
^{pr2}$好,收到数据。在
但当我周期性地发送数据时,如何指示OOB信息已经到达客户端呢?在
例如:
serverFile = open(serverPath, 'rb')
while True:
fileBytes = serverFile.read(1000)
if not fileBytes: break;
try:
i += 1
if i % 1000 == 0:
print 'sending urgent..'
conn.send('!',MSG_OOB)
conn.send(fileBytes)
except socket.error, (value, message):
if conn:
conn.close()
serverFile.close()
print 'Error while sending data : error code - ' + str(value) + '; message: ' + message
exit(1)
serverFile.close()
如果客户端尝试使用“data=连接接收(BUFFER_SIZE,MSG_OOB)'-什么都不起作用。 我还没有找到任何方法来使用SELECT或smth来解决问题。在
这将有助于引起OOB数据的注意。在
或许它会帮助某些人(显而易见但不是特别有效的解决方案): 客户:
相关问题 更多 >
编程相关推荐