2015-02-23 132 views
-1

我建立與網狀TCP服務器。Netty的多客戶端

  • 我想在客戶端建立連接(網絡約束)
  • 我想從來沒有關閉通道(因爲我需要通過服務器隨時通道寫)
  • 我有很多客戶。
  • 我開始服務器到一個端口上偵聽(例如:9090)

當連接建立,如何網狀可以接收其他客戶端的新連接? 所有流量路過服務器或網狀的端口使用其他端口選擇在客戶端的連接?

+0

很多「我想」,任何「我想」 ...... – HCarrasko 2015-02-24 15:34:33

回答

1

的Netty的服務器接收來自同一IP的連接:您已配置端口。因此,來自客戶端的任何新連接都是服務器的相同IP:端口。

這是客戶的一個小代碼。正如你所看到的,所有的客戶端都會運行到同一個主機和端口的連接。

Bootstrap b = new Bootstrap(); 
b.group(group) 
    .channel(NioSocketChannel.class) 
    .option(ChannelOption.TCP_NODELAY, true) 
    .handler(new SecureChatClientInitializer(sslCtx)); 

    // Start the connection attempt. 
    Channel ch = b.connect(HOST, PORT).sync().channel(); 

對於連接的客戶端將有一個隨機部分和所述服務器將使用已配置(例如[ID的端口:0xb47c8fca,/10.0.1.100:58963 => /10.0.1.20:9090 ])

希望有所幫助。

+0

謝謝您的回答,如果我沒有理解好端口通道中真正使用是開放的是客戶端的隨機端口或服務器的端口? – Euguuu 2015-02-24 08:57:39

+0

在服務器中,所有通信都會通過您確定的端口(例如9090)。在客戶端是一個隨機端口。 – 2015-02-24 11:16:59