首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络应用程序可以在我的wifi上的计算机之间工作,但不能在其他计算机之间工作

网络应用程序可以在我的wifi上的计算机之间工作,但不能在其他计算机之间工作
EN

Stack Overflow用户
提问于 2014-04-24 22:59:16
回答 1查看 103关注 0票数 0

所以我刚开始学习套接字编程,我决定做一个非常基本的即时消息/聊天室。问题是,当我在我的wifi网络上的机器之间测试应用程序时,它运行得很好,但当我超出这个范围时,客户端无法连接。会不会是因为我使用了任意的端口号?

服务器:

代码语言:javascript
复制
public class MessengerServer {
private static ServerSocket serverSocket;
private static final int PORT=1234;

public static void main(String[] args) throws
        IOException {
    try{
        serverSocket=
                new ServerSocket(PORT);
    }
    catch(IOException e){
        System.out.println("Unable to open connection.");
        System.exit(1);
    }
    do{
        //wait for client
        Socket client= serverSocket.accept();

        System.out.println("New Client Accepted");

        //create a thread to handle communication 
        //with this client and pass the constructor
        //for this thread the relevant socket
        ClientHandler handler= //ClientHandler extends thread 
                new ClientHandler(client);
        handler.start();
    }while(true);
}

客户端(仅包含相关内容):

代码语言:javascript
复制
public class InstantMessenger extends JFrame implements
    ActionListener{
    private static final int PORT= 1234; 
    private static InetAddress host;
    private static PrintWriter output;
    private static Socket link=null;
    private static byte[] ip= new byte[4]; //this is initialised with my IPAddress
                                   //which will not be shown.     


InstantMessenger(){

    try{
    host= InetAddress.getByAddress(ip);
    }
    catch(UnknownHostException uhEx){
        JOptionPane.showMessageDialog
                (this,"Unable to find host");
        System.exit(0);
    }
    try{
        link =new Socket(host,PORT);
        output=
            new PrintWriter(link.getOutputStream(),true);
        messageArea.append("\nConnected\n");
        }
    catch(IOException ioEx){
        messageArea.append("Unable to connect\n");
        }
}

客户端异常,StackTrace:

代码语言:javascript
复制
java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at instantmessenger.InstantMessenger.<init>(InstantMessenger.java:70)
at instantmessenger.InstantMessenger.main(InstantMessenger.java:132)
EN

回答 1

Stack Overflow用户

发布于 2014-04-25 00:17:14

这可能是由服务器上的连接设置引起的。如果连接设置为在公网上,我认为默认情况下不允许接受来自其他网络的连接。此外,请检查是否有任何防火墙设置会阻止来自其他子网的传入连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23272635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档