עבור לתוכן

JAVA |בעייה בתוכנית שרת המתחברת למחשב לקוח שלא נמצא ברשת

Featured Replies

פורסם

עשיתי תוכנית לקוח ושרת המתחברת למחשב באמצעות המחלקה ServerSocket..

תוכנית הלקוח מתחברת באמצעות פורט והאייפי של המחשב השרת.

נוצר חיבור כאשר הלקוח והשרת נמצא באותה רשת הביתית שלי.

ניסיתי את הלקוח במחשב שנמצא מחוץ לרשת אך הפעם לא עבד החיבור..

אולי אתם תוכלו לנסות לעזור לי עם זה

הקוד של השרת:

[size=0.7em]public static void main(String[] args) throws IOException {[/size]
[size=0.7em] final int port = 2000;[/size]
[size=0.7em] ServerSocket serverSocket = null;[/size]
[size=0.7em] try {[/size]
[size=0.7em] serverSocket = new ServerSocket(port);[/size]
[size=0.7em] System.out.println("Listening on port " + port);[/size]
[size=0.7em] } catch (IOException e) {[/size]
[size=0.7em] System.err.println("Could not listen on port: " + port);[/size]
[size=0.7em] System.exit(1);[/size]
[size=0.7em] }[/size]

[size=0.7em] Socket clientSocket = null;[/size]
[size=0.7em] try {[/size]
[size=0.7em] clientSocket = serverSocket.accept();[/size]
[size=0.7em] System.out.println("Connected client from: " [/size]
[size=0.7em] + clientSocket.getInetAddress());[/size]
[size=0.7em] } catch (IOException e) {[/size]
[size=0.7em] System.err.println("Accept failed.");[/size]
[size=0.7em] System.exit(1);[/size]
[size=0.7em] }[/size]

[size=0.7em] PrintStream out = new PrintStream([/size]
[size=0.7em] new BufferedOutputStream([/size]
[size=0.7em] clientSocket.getOutputStream(), 1024), false);[/size]
[size=0.7em] BufferedReader in = new BufferedReader([/size]
[size=0.7em] new InputStreamReader([/size]
[size=0.7em] clientSocket.getInputStream()));[/size]
[size=0.7em] String inputLine, outputLine;[/size]

[size=0.7em] out.flush();[/size]

[size=0.7em] while ((inputLine = in.readLine()) != null) {[/size]
[size=0.7em] System.out.println(inputLine);[/size]
[size=0.7em] }[/size]
[size=0.7em] out.close();[/size]
[size=0.7em] in.close();[/size]
[size=0.7em] clientSocket.close();[/size]
[size=0.7em] serverSocket.close();[/size]
[size=0.7em] }[/size]

הקוד של הלקוח

  public static void main(String[] args) throws IOException {


Socket kkSocket = null;
PrintStream out = null;
BufferedReader in = null;
String host = "127.0.0.1"; // or "localhost". Change to host's IP address (use ipconfig)
final int port = 1000; // 0..65535, don't use numbers less than 1000


try {
kkSocket = new Socket(host, port);
out = new PrintStream(kkSocket.getOutputStream());
in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: " + host);
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: " + host);
System.exit(1);
}


BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;
String fromUser;


while ((fromServer = in.readLine()) != null) {
System.out.println("Server: " + fromServer);
if (fromServer.equals("Bye."))
break;


fromUser = stdIn.readLine();
if (fromUser != null) {
System.out.println("Client: " + fromUser);
out.println(fromUser);
}
}


out.close();
in.close();
stdIn.close();
kkSocket.close();
}

פורסם

תקן את הקוד של השרת, קשה לקרוא אותו.

לשאלתך: האם המחשב הביתי שלך יושב מאחורי ראוטר ו/או פיירוול? כנראה צריך לקנפג אותם בהתאם.

פורסם
  • מחבר

כן יש לי ראוטר ופיירוול בווינדוס... פתחתי פורטים גם בראוטר וגם בווינדוס. אני כבר בספק אם בכלל אפשרי ליצור חיבור לשני מחשבים שהם לא על אותה הרשת...

פורסם

ברור שאפשר, על זה בנויה האינטרנט.

האם דאגת לפירוורד פורטים בהתאם?

פורסם
  • מחבר

סליחה על הבורות אבל מה זה פירוורד?

פורסם
  • מחבר

עובד ;D

תודה רבה!

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים