Я пытаюсь установить соединение между машиной (сервером), подключенной к сети (например, через точку доступа сети X), и другой (клиент), подключенной к точке доступа сети Y.
Проблема 1:
Кусок кода работает нормально, если сервер и клиент (может быть несколько) подключены к одной сети (скажем, 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){
}
}
}
Присоединение фрагмента кода для клиента (здесь на localhost явведите 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) {
}
}
}
Также, пожалуйста, напишите в комментарии, если какой-либо пункт я мог пропустить, развиваяпроблема.