当前位置: 首页 > 知识库问答 >
问题:

Java套接字/服务器套接字WAN连接

东门航
2023-03-14
public static void main (String[] args) throws IOException
{
    ServerSocket server = new ServerSocket(31350);
    Socket client1 = server.accept();   
}
public static void main(String[] args) throws IOException, UnknownHostException
{
    Socket socket;

    //  #'s are what I got from whatismyip.org on the server computer)
    byte[] serverb = new byte[] {(byte)##, (byte)##, (byte)###, (byte)###};

    socket = new Socket(InetAddress.getByAddress(serverb),31350);
}

线程“main”java.net.ConnectException:连接超时:在java.net.dualStackplainsockeTimpl.Connect0(本机方法)在java.net.dualStackplainsockeTimpl.socketConnect(DualStackplainsockeTimpl.java:69)在java.net.abstractplainsockeTimpl.doConnect(abstractplainsockeTimpl.java:339)在java.net.abstractplainsockeTimpl.java:200)pl.java:157)在java.net.sockssocketimpl.connect(sockssocketimpl.java:391)在java.net.socket.connect(socket.java:579)在java.net.socket.connect(socket.java:528)在java.net.socket.connect(socket.java:525)在java.net.socket.connect(socket.java:425)在java.net.socket(socket.java:241)在

防火墙被禁用。路由器上的端口31350被转发到我的计算机的本地ip地址,这是我在CMD中使用ipconfig获得的。但是它仍然不起作用,我只是在试图从客户端计算机创建套接字时得到了IOException。服务器计算机上什么也没发生。怎么了?

共有1个答案

许法
2023-03-14

[更新]

正如您所料,连接超时表明这是某种网络问题。来自客户端的数据包没有到达服务器机器。确切的解决方案将取决于路由器的类型,但谷歌的术语是“端口转发”。以下是我随机发现的一篇可能有所帮助的文章:http://www.rhinosoft.com/knowledgebase/kbarticle.asp?refno=1289

基本上,您对路由器进行编程,以便端口31350的任何连接请求都将被转发到局域网上的本地IP地址上的计算机。

public static void main(String[] args) throws IOException, UnknownHostException
{
    Socket socket;

            //  #'s are what I got from whatismyip.org on the server computer)
    byte[] serverb = new byte[] {(byte)##, (byte)##, (byte)###, (byte)###};

    socket = new Socket(InetAddress.getByAddress(serverb),31350);
}

您的代码正在捕捉有用的异常,吞噬它,并抛出一个用处小得多的异常。

对服务器代码执行相同的操作:

public static void main (String[] args) throws IOException
{
    ServerSocket server = new ServerSocket(31350);
    Socket client1 = client1 = server.accept();
}

堆栈跟踪将显示哪个方法引发了异常,这样您就不需要像inetaddress创建失败这样的冗余文本

 类似资料:
  • 首先我要感谢你花时间... 我在macbook中用C++创建了一个服务器套接字,在运行windows XP的不同机器中用Java创建了一个客户机/套接字。我已将端口指定为5000,但无法指定正确的主机,因此无法进行连接。当我在windows xp中使用WinSock2创建一个C++服务器/套接字时,当我使用本地主机时,连接是完美的...有什么想法吗??? 提前Thnx int main(int a

  • 我编写了一个简单的java套接字服务器。我可以使用java客户端连接到它。 但是,当我尝试将android设备连接到它时,它会给出以下错误: 代码如下: 这一行:似乎是罪魁祸首。 错误消息“java.net.socketexception:套接字失败:EACCES(权限被拒绝)” Android java.net.SocketException:套接字失败:EACCES(拒绝权限) Android

  • 我想找个人来澄清一个我相信我有的误解。我在读Java上的套接字编程,并不真正理解事情的实际流程是什么。以下是我对以下场景的两种可能的解释。 创建套接字实例 null 服务器接受客户端之后的连接会是这样的吗?(客户端与服务器创建的套接字通信,而不是与服务器套接字通信) 或者图表会像这样吗?(客户端通过ServerSocket与服务器保持通信。服务器通过接受连接时创建的套接字进行通信。)

  • 我正在开发web套接字应用程序。从前端来看,每个应用程序都有一个插座。但我不确定后端。我们将Python和nginx与Flask socketIO和socket io客户端库一起使用。此体系结构将用于通知前端发生了更改,并应更新数据。 以下是我的疑问-服务器上将创建多少套接字和线程?不同连接之间是否可以共享套接字?是否有任何工具可以分析插座是否打开?

  • 这是服务器类的代码。 如有任何帮助,不胜感激

  • 真的需要你帮忙。 我的项目是通过电缆连接两台PC机,并使用tcp套接字将客户端文本框形式的字符串发送到服务器。问题是ATI只能发送一个字符串,然后连接就会关闭。 注意:某个端口上的连接将在表单加载中建立并成功。