Java套接字无法运行调用命令

时间:2014-12-03 18:14:02

标签: java sockets

因此,对于我正在进行的类,我们有基于Java套接字的赋值,我们必须将一个字符串从客户端传递到服务器端,这将删除所有前导和尾随空白。代码如下:

TrimClient:

import java.io.*; 
import java.net.*; 
public class TrimClient
{
    public static void main (String [] args)
    {
        Socket s; //Client socket for connecting to the server 
        String server = "localhost"; //Use localhost by default
        int serverPort = 1221; //Use port 1221 by default
        InetAddress local, remote; //Local and remote addresses
        int localPort, remotePort; //Local and remote ports 

        //For input and output
        BufferedReader socketIn; //Socket input
        PrintWriter socketOut; //Socket output
        BufferedReader keyboardIn; //Keyboard input
        String userInput, serverResult; 

        //Process command line arguments
        //Error if more than two command line arguments
        if (args.length > 2) 
        {
            System.out.println("Usage: java TrimClient "
                               + "[-port=<number>] [server]");
            System.exit(-1); 
        }
        //If two arguments, only one should start with '-' 
        if (args.length == 2) 
        {
            if ((args[0].charAt(0) == '-' && 
                 args[1].charAt(0) == '-' ) ||
                (args[0].charAt(0) != '-' && 
                 args[1].charAt(0) != '-' ))
        {
                    System.out.println("Usage: "
                                   + "java TrimClient "
                                   + "[-port=<number>] [server]");
                    System.exit(-1);
                }
        }    
        //Set the server and server port suitably 
        for (int i = 0; i < args.length; i++)
        {
            if (args[i].charAt(0) != '-') 
                server = args[i]; 
            if (args[i].startsWith("-port="))
                serverPort = Integer.parseInt(args[i].substring(6)); 

        }  
        //Set up keyboard input and print greeting 
        keyboardIn = new BufferedReader(new InputStreamReader(System.in)); 
        System.out.println("Hello, you have invoked a Trim Client"); 
        System.out.println("You have requested a connection to " + 
                           server + " at port " + serverPort); 
        System.out.println(); //Blank line
        //Establish socket connection and communicate
        try 
        {
            //Establish connection 
            s = new Socket(server, serverPort); 
            //Report connection status 
            local = s.getLocalAddress(); remote = s.getInetAddress(); 
            localPort = s.getLocalPort(); remotePort = s.getPort(); 
            System.out.println ("Client side"); 
            System.out.println ("   " + local.getHostName() 
                                + "[" + local.getHostAddress() + "]" 
                                + " at port " + localPort);
            System.out.println ("Server side"); 
            System.out.println ("   " + remote.getHostName()
                                + "[" + remote.getHostAddress() + "]" 
                                + " at port " + remotePort); 
            System.out.println(); //Blank line
            //TCP provides a full-duplex byte stream service
            //For UNICODE and line support, we need BufferedReader 
            //and PrintWriter objects
            socketIn = new BufferedReader(new InputStreamReader(s.getInputStream())); 
            socketOut = new PrintWriter(s.getOutputStream(), true);
            //Interact with user
            System.out.print("Enter a string (or press "Enter" to quit): "); 
            userInput = keyboardIn.readLine(); 
            //Loop until user indicates termination 
            while (!userInput.equalsIgnoreCase(" "))
            {
                //Send user input to server
                socketOut.println(userInput); 
                //Get server response 
                serverResult = socketIn.readLine(); 
                //Report server response 
                System.out.println(serverResult); 
                System.out.println(); //Blank line
                //Get new string
                System.out.print("Enter a string (or press "Enter" to quit): "); 
                userInput = keyboardIn.readLine(); 
            }
            //Signal the server to quit 
            socketOut.println(userInput); 
            //Close all streams and socket 
            keyboardIn.close();
            socketIn.close(); 
            socketOut.close(); 
            s.close(); 
        }
        catch (Exception e)
        {
            e.printStackTrace(); 
        }
    }    
}

TrimServer:

import java.io.*; 
import java.net.*; 
public class TrimServer
{
    public static void main (String [] args)
    {
        ServerSocket ss = null; //Server socket to offer service
        Socket s; //Socket to accept connection 
        int serverPort = 1221; //Use port 1221 by default
        InetAddress local, remote; //Local and remote addresses
        int localPort, remotePort; //Local and remote ports 

        //For input and output
        BufferedReader socketIn; //Socket input
        PrintWriter socketOut; //Socket output
        String clientInput; //String sent by client
        String serverResult; //String to be sent back

        //Process command line arguments
        //Error if more than one command line argument
        if (args.length > 1) 
        {
            System.out.println("Usage: java TrimServer "
                               + "[-port=<number>]");
            System.exit(-1); 
        }
        //Set the server port suitably 
        if ((args.length == 1) && 
           (args[0].startsWith("-port=")))
                serverPort = Integer.parseInt(args[0].substring(6)); 
        //Print greeting 
        System.out.println("Hello, you have invoked a Trim Server"); 
        System.out.println("You have requested that service be started at port " + serverPort); 
        System.out.println(); //Blank line
        //Establish requested service
        try 
        {
            ss = new ServerSocket(serverPort);
        }
        catch (Exception e) 
        {
            e.printStackTrace(); 
        }
        //Report status 
        System.out.println("Trim Server is ready"
                           + " for service at port " + serverPort);
        System.out.println(); //Blank line
        //Server stops only when the process is terminated 
        //Enter a forever loop to offer service        
        for (;;) 
        {
            try 
            {
                //Wait and accept connection 
                s = ss.accept(); //Accept connection on server socket
                //Report connection status
                System.out.println("Accepted connection");
                local = s.getLocalAddress(); remote = s.getInetAddress(); 
                localPort = s.getLocalPort(); remotePort = s.getPort(); 
                System.out.println ("Server side"); 
                System.out.println ("   " + local.getHostName() 
                                + "[" + local.getHostAddress() + "]" 
                                + " at port " + localPort);
                System.out.println ("Client side"); 
                System.out.println ("   " + remote.getHostName()
                                + "[" + remote.getHostAddress() + "]" 
                                + " at port " + remotePort); 
                System.out.println(); //Blank line
                socketIn = new BufferedReader(new InputStreamReader(s.getInputStream())); 
                socketOut = new PrintWriter(s.getOutputStream(), true);
                //Interact with client
                //Read string from client
                clientInput = socketIn.readLine(); 
                //Loop until client indicates termination 
                while (!clientInput.equalsIgnoreCase(" "))
                {
            //Trims all leading and trailing whitespace
                    serverResult = clientInput.trim();
                    //Log work done 
                    System.out.println("Server received: " 
                                       + clientInput); 
                    System.out.println("Server responded: "
                                       + serverResult);
                    System.out.println(); //Blank line
                    //Send response to client
                    socketOut.println(serverResult); 
                    //Get new string
                    clientInput = socketIn.readLine(); 
                }  
                //Close all streams, socket and report 
                socketIn.close(); 
                socketOut.close(); 
                s.close();
                System.out.println("Closed connection"); 
                System.out.println(); //Blank line
            } 
            catch (Exception e) 
            { 
                e.printStackTrace();
            }
        } 
    }    
}

我必须使用PuTTy连接到我们学校的服务器以进行此分配,但是当我使用以下方式调用服务器和客户端连接时:

java TrimServer -port=1221
java TrimClient -port=1221 **********

我收到一条错误,指出线程“main”中的异常java.lang.NoClassDefFoundError:Trim Server

Caused by: java.lang.ClassNotFoundException: TrimServer
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Naitve Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

0 个答案:

没有答案