פורסם 2012 באפריל 1313 שנים עשיתי תוכנית לקוח ושרת המתחברת למחשב באמצעות המחלקה 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(); }
פורסם 2012 באפריל 1313 שנים תקן את הקוד של השרת, קשה לקרוא אותו.לשאלתך: האם המחשב הביתי שלך יושב מאחורי ראוטר ו/או פיירוול? כנראה צריך לקנפג אותם בהתאם.
פורסם 2012 באפריל 1313 שנים מחבר כן יש לי ראוטר ופיירוול בווינדוס... פתחתי פורטים גם בראוטר וגם בווינדוס. אני כבר בספק אם בכלל אפשרי ליצור חיבור לשני מחשבים שהם לא על אותה הרשת...
פורסם 2012 באפריל 1413 שנים http://he.wikipedia.org/wiki/Port_Forwardinghttp://en.wikipedia.org/wiki/Port_forwardingאם לדוגמה השרת שלך מאזין לפורט 8000, אז אתה צריך לקנפג בראוטר שכל בקשה לפורט הזה תופנה למחשב שעליו יושב השרת.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.