Java套接字可以';t运行调用命令
因此,对于我正在使用的一个类,我们有一个基于Java套接字的赋值,我们必须将一个字符串从客户端传递到服务器端,该字符串将删除所有的前导和尾随空格。代码如下: TrimClient:Java套接字可以';t运行调用命令,java,sockets,Java,Sockets,因此,对于我正在使用的一个类,我们有一个基于Java套接字的赋值,我们必须将一个字符串从客户端传递到服务器端,该字符串将删除所有的前导和尾随空格。代码如下: TrimClient: import java.io.*; import java.net.*; public class TrimClient { public static void main (String [] args) { Socket s; //Client socket for conne
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();
}
}
}
我收到一个错误,该错误在线程“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)
您能指出导致异常的代码行吗?它没有显示导致错误的代码行。我收到的只是文章末尾的错误消息。所以我猜atm唯一相关的代码是TrimServer部分。你确定这是完整的堆栈跟踪吗?它似乎不包括来自应用程序的任何方法调用。我对它是全新的,所以如果StackTrace指的是它给我的异常,那么是的。我们应该制作2个文件,我假设我做得正确,然后使用我提供的两个命令在客户端和服务器之间建立连接(***用于检查地址以防其敏感数据)。这是在两台不同的机器上使用PuTTy的两个不同实例完成的。我刚刚在我的计算机上测试了它,它实际上可以工作(在修复了一些编译时(编程阶段/编写代码)错误之后)。您是否确定您的文件已正确编译,并且在运行时(运行阶段/应用程序已启动)找到了二进制
.class
文件?这些是你应该问老师的问题。显然,他没有涵盖一些非常重要的步骤(或者在他提到这些步骤的时候你没有听)。当您输入字符串时(或按“回车”键退出):“,您必须转义字符串中的引号:“输入字符串(或按“回车”键退出):”
java TrimServer -port=1221
java TrimClient -port=1221 **********
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)