2013-12-08 72 views
0

我是新來的Java,但不是新的編程;自DOS以來,我一直在計算機周圍。java socket聽不接受連接?

我想寫一個簡單的網絡代理,我想監聽傳入的連接請求,但我不想接受請求,因爲客戶端會立即發送數據。我希望代理在接受連接之前嘗試成功打開到預配置目標的連接,並在無法到達目的地時斷開連接。

這是可能的在VB6的方式回來時,我相信有可能在C#中使用事件做到這一點,但問題是代理機器是unix,我只是不覺得受虐狂足以在C++中寫任何東西只爲一個系統。

任何人有任何想法如何做到這一點,或至少是一個kludge模擬這樣的事情? 我看到的文章here太含糊,似乎已經過時,因爲oracle文檔似乎重定向到了不同的頁面。

+0

客戶端可以在接受連接之前發送數據。它的很多,直到你的套接字接收緩衝區的大小。你的問題是基於錯誤的前提。 – EJP

回答

-2

這在Java中是不可能的。套接字庫寫入的方式無法接受傳入連接的詳細信息。

您提供的鏈接只會在接受它們之前拒絕連接,但我認爲它不允許您使用SecurityManager拒絕的連接。

在接受連接之前是否可以打開到目的地的連接,那麼只有在連接打開到目的地時才能接受?

+0

如果在設定的時間內沒有收到數據,目標服務器將丟棄該連接,因此我無法搶先打開連接。 – Xyphos

+0

我可以接受連接,然後嘗試連接到目標服務器,但我不確定如何處理客戶端,如果目標無法連接到。我想一個簡單的套接字就足夠了,但客戶端可能會嚇壞了。 – Xyphos

+0

服務器將如何知道要連接到什麼?爲什麼客戶端應該提供一個監聽套接字?和一個開放的防火牆端口?答案沒有多大意義。不是這個問題也沒有。 – EJP