我正在嘗試編寫一個可靠的udp協議,但我很困惑,因爲服務器何時將連接移交給套接字。 在java中,tcp服務器偵聽特定的端口,然後接受,返回一個套接字。你如何去做一個基於tcp的可靠的udp協議?
Socket clientSocket = server.accept();
是否接受法順位交換或當國家建立後返回一個插座?
我正在嘗試編寫一個可靠的udp協議,但我很困惑,因爲服務器何時將連接移交給套接字。 在java中,tcp服務器偵聽特定的端口,然後接受,返回一個套接字。你如何去做一個基於tcp的可靠的udp協議?
Socket clientSocket = server.accept();
是否接受法順位交換或當國家建立後返回一個插座?
當accept方法返回套接字時,套接字處於連接狀態,並在accept方法返回套接字之前交換SYN/SYN-ACK數據包。實際上,SYN數據包不以accept方式交換。這些數據包在驅動程序層(TCP堆棧)上進行交換。
如果您正在嘗試編寫可靠的UDP,那麼我強烈建議您查看一下UDT項目源代碼。它是用C++編寫的,但你可以從這個項目中得到很多指導。 UDT項目寫得非常好,高效且非常穩定。
Java套接字是基於BSD API建模的,所以由accept
返回的套接字被假定爲完全連接。
你在使用什麼庫? –
@Seth Carnegie我實際上使用qt,但我正在學習java的方式。 Qt很相似,它使用套接字描述符。我更好奇tcp數據包交換中什麼時候返回套接字? – carboncomputed