【问题标题】:How to modify source port in httpURLConnection call如何在 httpURLConnection 调用中修改源端口
【发布时间】:2015-01-27 06:47:20
【问题描述】:

我有一个客户端 Android 应用程序,它创建到服务器的 http 和 https 连接(在端口 80 上),我可以成功读取和写入数据。

当我的客户端应用程序的多个实例尝试从同一网络(相同的源 IP 地址)连接到服务器时,就会出现问题。在这种情况下,只有 1 个客户端始终连接(当多个客户端尝试同时连接到服务器时)。

有没有办法在 httpURLConnect 调用中指定源端口号,以便服务器为我的每个客户端打开一个单独的套接字。

HttpsURLConnection conns = null;
url=new URL(urlS);
conns=(HttpsURLConnection)url.openConnection();                 
conns.setDoOutput(true);
conns.setRequestMethod("POST");
conns.setFixedLengthStreamingMode(params.getBytes().length);
conns.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conns.setRequestProperty("Connection", "close");
conns.setConnectTimeout(SOCKET_TIMEOUT);
conns.setReadTimeout(HTTP_TIMEOUT);

//send the POST out
PrintWriter out = new PrintWriter(conns.getOutputStream());
out.print(params);
out.close();

【问题讨论】:

  • 为什么? 什么问题?每个连接你总是会得到一个不同的本地端口,并且服务器总是有一个相应的新套接字。

标签: android sockets httpurlconnection


【解决方案1】:

我想在这里发布解决方案,因为它可能对某人有所帮助。 我从上面的代码中删除了这一行,它现在就像一个魅力, 我可以在同一网络上同时运行 3 个客户端与同一台服务器通信。 我刚刚删除了这个:

conns.setRequestProperty("Connection", "close");

想知道它在做什么,但删除此行解决了问题。

【讨论】:

  • 错误,它告诉服务器“关闭”“连接”。道德:当你不知道代码做什么时,不要编写代码。
  • 我这样做是因为我的服务器在共享主机上,我担心最终服务器会限制端口。
  • 服务器只需要一个端口。我建议你不要再猜测了。
猜你喜欢
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
  • 2023-01-18
  • 1970-01-01
相关资源
最近更新 更多