我试图在连接到网络(例如,通过网络X的热点)的机器(服务器)和连接到网络Y的热点的另一台(客户端)之间建立连接。
问题1:
如果Server和client(可以是 多个)连接到同一网络(例如X),但如果服务器和 客户端位于不同的网络(X和Y)上,那么我正在连接 超时错误。
问题2:
如果服务器和客户端位于同一网络(此处通过路由器),则也 他们无法通过上述相同错误进行连接。我已经完成端口 用路由器和防火墙和防御者转发(此处为:5555) 客户端和服务器均关闭。
我想念的是什么。请查看!!
为服务器附加代码段:
import java.net.*;
import java.io.*;
class ServerSideConnection{
public static void main(String args[]){
try{
while(true){
ServerSocket socket = new ServerSocket(5555);
Socket serverinput = socket.accept();
Mutithrd_excutn mutithrd_excutn_obj = new Mutithrd_excutn(serverinput);
mutithrd_excutn_obj.start();
socket.close();
}
}catch(IOException e){
}
}
}
import java.net.*;
import java.io.*;
class Mutithrd_excutn extends Thread{
public Socket serverinput;
public Mutithrd_excutn(Socket serverinput){
this.serverinput = serverinput;
}
public void run(){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(serverinput.getInputStream()));
PrintWriter pw = new PrintWriter(serverinput.getOutputStream());
BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
String str_client = "";
String str_server = "";
while(true){
str_client = br.readLine();
System.out.println("Client : " + str_client);
if(str_client.equals("stop")){
return;
}
str_server = br1.readLine();
pw.println(str_server);
pw.flush();
}
//serverinput.close();
//socket.close();
}catch(IOException e){
}
}
}
为客户端附加代码段(在本地主机中,我正在输入 服务器计算机的IP地址):
import java.io.*;
import java.net.*;
public class ClientSideConnection {
public static void main(String[] args) {
try {
Socket s = new Socket("localhost",5555);
PrintWriter pw = new PrintWriter(s.getOutputStream());
BufferedReader br_client_input = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br_server_output = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str_client = "";
String str_server = "";
while(!str_client.equals("stop")) {
str_client = br_client_input.readLine();
pw.println(str_client);
pw.flush();
if(!str_client.equals("stop")) {
str_server = br_server_output.readLine();
System.out.println("Server : " + str_server);
}
}
br_client_input.close();
br_server_output.close();
s.close();
}catch(IOException e) {
}
}
}
此外,如果我在阐述问题时可能遗漏了任何内容,请务必发表评论。
答案 0 :(得分:0)
如果它在同一网络中工作,但不在不同网络之间工作,那么我会看到以下选项:
不幸的是,您的问题所包含的详细信息不足以进一步限制选项,即,未知端口转发是如何完成的,以及在测试中将哪个IP地址用作服务器地址(内部或外部)。