2014-12-13 4 views
0

Я новичок в java. Я использую NetBeans 8.0.2 Я начал новый проект (Java -> Java Class Libary) Я поместил два класса и запустил свой код. Однако ошибок нет, нет результатов, которые будут показаны после успешного завершения проекта.Выход клиента сервера чата

Я очень ценю вашу помощь.

Мой первый класс - ChatServer & мой второй клиент-сервер!

import java.net.*; 
import java.io.*; 

public class ChatServer 
{ private Socket   socket = null; 
    private ServerSocket server = null; 
    private DataInputStream streamIn = null; 

    public ChatServer(int port) 
    { try 
     { System.out.println("Binding to port " + port + ", please wait ..."); 
     server = new ServerSocket(port); 
     System.out.println("Server started: " + server); 
     System.out.println("Waiting for a client ..."); 
     socket = server.accept(); 
     System.out.println("Client accepted: " + socket); 
     open(); 
     boolean done = false; 
     while (!done) 
     { try 
      { String line = streamIn.readUTF(); 
       System.out.println(line); 
       done = line.equals(".bye"); 
      } 
      catch(IOException ioe) 
      { done = true; 
      } 
     } 
     close(); 
     } 
     catch(IOException ioe) 
     { System.out.println(ioe); 
     } 
    } 
    public void open() throws IOException 
    { streamIn = new DataInputStream(new BufferedInputStream(socket.getInputStream())); 
    } 
    public void close() throws IOException 
    { if (socket != null) socket.close(); 
     if (streamIn != null) streamIn.close(); 
    } 
    public static void main(String args[]) 
    { ChatServer server = null; 
     if (args.length != 1) 
     System.out.println("Usage: java ChatServer port"); 
     else 
     server = new ChatServer(Integer.parseInt(args[0])); 
    } 
} 

import java.net.*; 
import java.io.*; 

public class ChatClient 
{ private Socket socket    = null; 
    private DataInputStream console = null; 
    private DataOutputStream streamOut = null; 

    public ChatClient(String serverName, int serverPort) 
    { System.out.println("Establishing connection. Please wait ..."); 
     try 
     { socket = new Socket(serverName, serverPort); 
     System.out.println("Connected: " + socket); 
     start(); 
     } 
     catch(UnknownHostException uhe) 
     { System.out.println("Host unknown: " + uhe.getMessage()); 
     } 
     catch(IOException ioe) 
     { System.out.println("Unexpected exception: " + ioe.getMessage()); 
     } 
     String line = ""; 
     while (!line.equals(".bye")) 
     { try 
     { line = console.readLine(); 
      streamOut.writeUTF(line); 
      streamOut.flush(); 
     } 
     catch(IOException ioe) 
     { System.out.println("Sending error: " + ioe.getMessage()); 
     } 
     } 
    } 
    public void start() throws IOException 
    { console = new DataInputStream(System.in); 
     streamOut = new DataOutputStream(socket.getOutputStream()); 
    } 
    public void stop() 
    { try 
     { if (console != null) console.close(); 
     if (streamOut != null) streamOut.close(); 
     if (socket != null) socket.close(); 
     } 
     catch(IOException ioe) 
     { System.out.println("Error closing ..."); 
     } 
    } 
    public static void main(String args[]) 
    { ChatClient client = null; 
     if (args.length != 2) 
     System.out.println("Usage: java ChatClient host port"); 
     else 
     client = new ChatClient(args[0], Integer.parseInt(args[1])); 
    } 
} 
+0

Вы используете его с аргументами командной строки? –

+0

Возможно, вам не следует создавать «Java Class Libary», но вместо этого «Java-приложение». Как сказано в названии, это библиотека, которую могут использовать другие приложения, а не само приложение. – BDL

+0

Как я уже сказал, я новичок в java, так что это за командной строки! – user4347547

ответ

0

Вы должны работать как ChatClient и ChatServer (отсюда и основные методы в обоих классах). Кроме того, вам необходимо передать аргументы командной строки. Давайте посмотрим на main() в ChatClient:

public static void main(String args[]) 
    { ChatClient client = null; 
     if (args.length != 2) 
     System.out.println("Usage: java ChatClient host port"); 
     else 
     client = new ChatClient(args[0], Integer.parseInt(args[1])); 
    } 

Вы разбор аргументов, чтобы получить имя сервера и порт. Это пример запуска этих классов с соответствующими параметрами:

java ChatServer 55444 
java ChatClient 127.0.0.1 55444 

Here краткий учебник, охватывающий вопрос о создании аргументов командной Линд в Netbeans IDE.

Кроме того, как отметил @BDL, вам лучше создать New Project вместо java-библиотеки (или даже двух проектов для сервера и клиента соответственно).