我要在 Java 中制作客户端-服务器应用程序,但主要问题是我无法在拖曳字符串之间进行比较
这是我的代码
import java.io.*;
import java.net.*;
class UDPServer
{
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9876);//oepn datagram with port
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
String pass = "123";
int count = 0;
while(true)
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);//get data
serverSocket.receive(receivePacket);//datagram socket
String sentence = new String( receivePacket.getData());//store string
//String sentence = receivePacket.getData().toString();
if(sentence.equals("123"))
{
System.out.println(sentence.equals("123"));
}
else
{
System.out.println(sentence.equals("123"));
}
System.out.println("RECEIVED: " + sentence);//print it
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
}
}
}
在这种方法中,它对我不起作用sentence.equals("123")
你能帮我做字符串比较吗?
如果我必须猜测,我怀疑您正在比较以下内容:"123 "
和 "123"
哪些是不同的字符串。 当你把它们打印出来时,它们看起来是一样的,但实际上它们有不同的内容。 尝试打印一些长度sentence.length()
,看看是否有不同。 它可能包含 或其他一些空格字符。 在将其转换为字符串之前,您可能需要将其从发送到服务器或将其从数据包的有效负载中拉出。 请记住,当您执行new String( byte[] )
时,您正在以平台特定的格式转换内容。 您可能需要使用字符编码来确保发送数据的两台计算机以相同的编码发送它们。
new String( byte[], String charset )