2

リモート マシン上の Python サーバーにデータを送信する C プログラムがあります。C コードはソケットを接続し、帯域外メッセージとそれに続くデータを送信します。

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にデータは受信されません

msg = csock.recv(msg_size)

それから私はデータを取得します。

私は何を間違っていますか?

4

1 に答える 1

0

解決しました。私は C コード内に微妙なバグを発見しました。これがデータ破損の原因となり、いくつかのおかしな影響を引き起こしました。したがって、両端のソケットコードは健全なようです。

于 2013-07-01T23:57:55.427 に答える