2015-12-14 81 views
1

我想送和Java中TCP套接字編程和多線程Java中

  • 第一臺計算機接收使用TCP套接字三臺電腦之間的數據從鍵盤獲取數據並將其發送到 第二臺計算機。
  • 第二計算機需要從 第一個的數據,並將其發送到第三計算機。

我的問題是:我可以在不使用多線程的情況下,在第二臺計算機(它從第一臺計算機接收數據並同時將數據發送到第三臺計算機)中實現TCP套接字程序?

+1

java中默認/最簡單的套接字支持是使用「阻塞」IO API,它需要多個線程才能正確使用。 「非阻塞」API可以單線程完成,但使用起來更復雜。 – jtahlborn

回答

2

是的,你可以。 (但它可能很愚蠢)

只綁定一個端口,並在服務器2上偵聽它。 服務器1連接到服務器2併發送數據。 服務器2讀取數據,連接到服務器3並在同一線程上發送數據。

沒有多線程,您可以從服務器1讀取輸入或者將數據發送到服務器3.此外,您可以處理來自服務器1只逐個數據。該程序將運行緩慢(不會因爲多線程可能會更快)。

+0

非常感謝你。 –

+0

由於數據是從鍵盤獲取的,因此單線程解決方案的速度應該足夠了。對於年回答, –

0

你應該讓機器2作爲服務器,會聽一些固定IP:端口。將機器1和3作爲客戶機,它將在固定的ip:port上連接到機器2。

關於多線程,可以讓你的服務器線程使用輪詢/選擇較少。請參閱鏈接Is there epoll equivalent in Java?,它更好地解釋了投票/選擇。

+0

thanx。 –