我编写了一个简单的客户端-服务器应用程序。它在我的电脑上运行得很好。但是当我的朋友尝试连接我的服务器时,他无法连接。我在我的计算机上使用端口 23 创建服务器。这是创建服务器的部分:
public Server(int port_number) throws IOException{
create_Server(port_number);
}
public static void main(String[] args) throws IOException {
int port_number=23;
new Server(port_number);
}
private void create_Server(int port_number) throws IOException{
ss = new ServerSocket(port_number);
System.out.println("Server is ready!");
while(true){
s=ss.accept();
System.out.println(s.getLocalAddress().getHostName() + " was connected!");
send_con_mes();
list.put(s,new DataOutputStream(s.getOutputStream()) );
new ServerThread(s,this).start();
}
}
这是客户端部分;
public void start_Chat() {
try {
Ip_addr = JOptionPane.showInputDialog("Enter the IP number of the server to connect : ");
s = new Socket(Ip_addr, 23);
Client_name = JOptionPane.showInputDialog("Enter your Nickname : ");
dis = new DataInputStream(s.getInputStream());
dos = new DataOutputStream(s.getOutputStream());
new Thread(Client.this).start();
我可以说话、发送私人消息等。当我作为客户端连接到我的计算机上的服务器时,但最后的问题是来自另一个 IP 的客户端无法连接。
您必须配置网络以允许访问此端口。这意味着在您的 PC 和路由器等上启用防火墙。在 Java 中您无法做任何事情来避免必须首先做好这一点。
编辑:如果另一台计算机尝试通过 Internet 路由器连接到您,他们将必须使用您的公共 IP 地址而不是您的内部 PC 地址。如果您不知道自己的公共地址,可以使用 http://whatismyipaddress.com/ 等网站。除非您有静态 IP 地址,否则它会在您重新连接时发生变化。 (始终保持联系的原因之一)