2015-12-19 78 views
0

我使用Tyrus進行連接。這裏是代碼:使用Java EE中的特定IP發送WebSocket請求

public void connect(String IP) { 
    WebSocketContainer webSocketContainer = ContainerProvider.getWebSocketContainer(); 

    ClientEndpointConfig.Configurator configurator = new ClientEndpointConfig.Configurator() { 
     public void beforeRequest(Map<String, List<String>> headers) { 
      List<String> originValue = new ArrayList<>(); 
      originValue.add("http://example.com"); 
      headers.put("Origin", originValue); 
     } 
    }; 

    ClientEndpointConfig clientConfig = ClientEndpointConfig.Builder.create() 
      .configurator(configurator) 
      .build(); 

    try { 
     webSocketContainer.connectToServer(this, clientConfig, new URI(IP)); 
    } catch (Exception e) { 
     ... 
    } 
} 

我的電腦有幾個IP地址。我想從選定的IP發送WebSocket請求 - 我想將WebSocket綁定到特定的本地IP。有可能嗎?我應該使用另一個庫嗎?

編輯:我發現netty - 它允許手動設置本地IP地址。

回答

0

我用代理而不是爲請求選擇IP。

0

我相信操作系統會選擇本地地址 - 基於適用於本地接口的路由表。

如果你有多個IP都可以到達目標主機,我希望你可以通過你想綁定的本地IP來配置一個到(靜態)路由的主機。

+0

默認情況下,請求總是由一個IP發送。我想自己設置IP。這可能嗎? –

+0

正如我所說 - 只有當從該地址到服務器的路由。 – Jan

+0

我想 - 還有另一種解決方案 - http://stackoverflow.com/questions/30875927/tyrus-websockets-java-how-to-set-client-local-ip-address - 但可能Tyrus不支持設置本地IP地址,我將不得不切換到另一個庫... –