我正在尝试使用Java中的DatagramPacket与服务器和客户端进行通信。我的目标是:当客户说:你好,而服务器说:你好,很高兴见到你。所以我用一个if条件来达到这个目的。但是,当输入为“ Hello”时,它看起来像是if条件(我已经使用过debug)。我想知道为什么会这样吗?看来太奇怪了。谁能帮助我解决这个问题?任何帮助,将不胜感激!谢谢!代码:客户:
public static void main(String[] args) {
System.out.println("This is Server");
DatagramSocket server = null;
byte[] container = new byte[1024];
try {
server = new DatagramSocket(9998);
} catch (SocketException e) {
e.printStackTrace();
}
DatagramPacket dPacket = new DatagramPacket(container, container.length);
try {
while(true) {
server.receive(dPacket);
byte[] datas = dPacket.getData();
String temp = new String(datas);
if (temp.equals("Hello")) {
System.out.println("Hi~!Nice to meet you!");
}else if (temp.equals("How are you?")) {
System.out.println("I am good!");
}else {
System.out.println("Have a good day");
}
if (temp.equals("exit")) {
break;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
server.close();
}
客户:
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("This is Client");
try {
DatagramSocket client = new DatagramSocket(8888);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = "";
while(!input.equals("exit")) {
input = br.readLine();
byte[] msg = input.getBytes();
DatagramPacket dPacket = new DatagramPacket(msg, msg.length,new InetSocketAddress("localhost",9998));
client.send(dPacket);
}
client.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
问题来源:Stack Overflow
接收数据时请尝试以下操作。
byte[] datas = dPacket.getData();
String temp = new String(datas, 0, dPacket.getLength());
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。