2
我有一個C程序,它將一些數據發送到遠程計算機上的python服務器。 C代碼連接插座,然後發送出的帶外消息,隨後一些數據:未收到套接字帶外數據作爲OOB
int on = 1;
fd = socket(PF_INET, SOCK_STREAM, 0);
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(int))
...
send(fd, msg, msg_size, MSG_OOB);
write(fd, data, data_size);
在Python代碼接受該連接,然後服務器讀取OOB消息,然後將數據:
self.socket = socket.socket(socket.PF_INET, socket.SOCK_STREAM)
self.socket.setsockopt(socket_SOL_SOCKET, socket_SO_REUSEADDR, 1)
self.socket.bind(self.server_addr)
self.socket.listen(self.request_queue_size)
...
...
msg = csock.recv(msg_size, socket.MSG_OOB)
...
沒有數據接收到味精,但是,如果我只是叫
msg = csock.recv(msg_size)
然後我得到的數據。
我在做什麼錯?
當然,我的意思是'帶外'。我認爲這是我的腦子超出界限! – blueballoon
你在檢查系統調用的錯誤代碼嗎?特別是'send()' – nouney
另一個問題:爲什麼你使用write()和send()來發送不同的緩衝區? – nouney