如果網絡連接在有線/無線之間切換(更多信息,請參閱Method to Cancel/Abort GStreamer tcpclientsink Timeout),我最近修補了我的GStreamer 0.10.36副本以超時tcpclientsink。這是一個簡單的改變。我只是說了以下內容gsttcpclientsink.c的gst_tcp_client_sink_start()
功能:Socket SO_SNDTIMEO Timout是設置值的兩倍
struct timeval timeout;
timeout.tv_sec = 60;
timeout.tv_usec = 0;
...
setsockopt (this->sock_fd.fd, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout));
奇怪的是,實際的超時(按掛鐘時間計算)總是雙I設置的值。如果我在超時設置爲60秒的情況下中斷網絡連接,GStreamer /套接字將中止120秒。如果我將超時設置爲30秒,則需要60秒。如果我將超時設置爲180秒,則需要360秒。有什麼關於套接字,我不明白,可能會導致此行爲?我真的很想知道這裏發生了什麼。因爲我覺得我有一個類似的問題