2012-05-30 57 views
0

我正在嘗試編寫一個可靠的udp協議,但我很困惑,因爲服務器何時將連接移交給套接字。 在java中,tcp服務器偵聽特定的端口,然後接受,返回一個套接字。你如何去做一個基於tcp的可靠的udp協議?

Socket clientSocket = server.accept(); 

是否接受法順位交換或當國家建立後返回一個插座?

+0

你在使用什麼庫? –

+0

@Seth Carnegie我實際上使用qt,但我正在學習java的方式。 Qt很相似,它使用套接字描述符。我更好奇tcp數據包交換中什麼時候返回套接字? – carboncomputed

回答

2

當accept方法返回套接字時,套接字處於連接狀態,並在accept方法返回套接字之前交換SYN/SYN-ACK數據包。實際上,SYN數據包不以accept方式交換。這些數據包在驅動程序層(TCP堆棧)上進行交換。

如果您正在嘗試編寫可靠的UDP,那麼我強烈建議您查看一下UDT項目源代碼。它是用C++編寫的,但你可以從這個項目中得到很多指導。 UDT項目寫得非常好,高效且非常穩定。

http://udt.sourceforge.net/

0

Java套接字是基於BSD API建模的,所以由accept返回的套接字被假定爲完全連接。

0

首先回答的問題 - 當接受退貨套接字連接。

其次,做這樣的事情的最好方法是使用ØMQ,因爲它太棒了,對你來說非常重要。

從這個article最後服用,它的工作原理是這樣的:

用戶數據報協議(UDP)是互聯網協議套件,一組用於互聯網的網絡協議的核心成員之一。使用UDP,計算機應用程序可以將消息(在這種情況下稱爲數據報)發送到Internet協議(IP)網絡上的其他主機,而無需事先通信來設置特殊的傳​​輸通道或數據路徑。

enter image description here