带套接字的java应用程序

带套接字的java应用程序,java,Java,java中的套接字有一个问题:我在桌面PC上有一个服务器,我实例化了一个ServerSocket对象,例如: ServerSocket socket = new ServerSocket(port); 其中“port”是端口数 此服务器套接字接受客户端。这个客户端是另一个应用程序java,它运行在另一台连接到服务器PC的同一网络的台式PC上。在这个应用程序java中,我实例化了一个套接字对象,它连接到服务器PC的本地IP(例如:192.168.1.11)和serverSocket的端口。当我运

java中的套接字有一个问题:我在桌面PC上有一个服务器,我实例化了一个ServerSocket对象,例如:

ServerSocket socket = new ServerSocket(port);
其中“port”是端口数

此服务器套接字接受客户端。这个客户端是另一个应用程序java,它运行在另一台连接到服务器PC的同一网络的台式PC上。在这个应用程序java中,我实例化了一个套接字对象,它连接到服务器PC的本地IP(例如:192.168.1.11)和serverSocket的端口。当我运行服务器和客户机时,客户机没有连接到服务器。如果我在同一台台式PC上运行服务器和客户端,客户端将成功连接到服务器

我正在考虑防火墙配置的问题,但我没有设法解决它。请帮帮我

这是服务器的代码:

//I will accept one client
ServerSocket server = new ServerSocket(19999);
Socket client = server.accept();                
new Thread(new ManagerConnectionThread(client)).start(); //this thread manage the requests
ManagerConnectionThread是一个管理服务器和客户端之间通信的类:

//This code is on the server
OutputStreamWriter out = new OutputStreamWriter(client.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
这是客户端的代码:

public static void main(String[] args){
    Socket client = new Socket(InetAddress.getByName("192.168.1.11"), 19999); //192.168.1.11 is IP of "server" pc
    OutputStreamWriter out = new OutputStreamWriter(client.getOutputStream());
    BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
}

你有路由器吗?如果是,您将需要配置一些端口转发,并尝试通过外部地址进行访问,这意味着您将尝试通过指向您的计算机的路由器进行连接

此外,您可能需要对防火墙进行一些调整,在某个时候,我为学校做了类似的事情,但作为一个服务器,我使用的是基于Linux的操作系统,因此过程可能会有所不同,但我确实需要为我使用的端口允许输入/输出

你可能会在这篇文章中找到一些类似的答案


编辑:我找到了我以前的家庭作业,我肯定使用了外部地址(特别是因为我想在服务器在家时从学校访问它),所以我会连接到笔记本电脑的外部地址,然后在路由器的设置中,我会将我使用的端口转发到服务器,在服务器中,允许特定端口的传入流量

您是否可以编辑您的问题并添加客户端和服务器源代码?如果可以在同一台计算机上建立连接,但不能在不同的计算机上建立连接,则可能是防火墙问题。您的服务器上运行什么操作系统?什么防火墙?@vanje这是绝对正确的。在我的服务器上运行windows 10。应用程序在eclipse neon 3中运行。我做这项工作是为了学习。防火墙是windows 10的默认设置。我还尝试在另一台电脑上连接浏览器,但什么也没有。在端口19999上“我也尝试在另一台电脑上连接浏览器,但什么也没有”,或者只是一般?您确定IP是正确的吗?”