System.out.println("Start server...");
DatagramSocket s=new DatagramSocket(3030);
byte[] data=new byte[100];
DatagramPacket dgp=new DatagramPacket(data, data.length);
while(true){
s.receive(dgp); System.out.println(new String(data).trim());
System.out.println("Receive Data"); s.send(dgp);
}以上是我的udp协议的接收代码,但现在收到的数据显示都是乱码。有可能是跟数据的偏移量有关,DatagramPacket还有一个接口是带offset参数的,但不知道怎么用。另外还有什么原因会出乱码吗?
请高手指教一下,解决问题立即给分
DatagramSocket s=new DatagramSocket(3030);
byte[] data=new byte[100];
DatagramPacket dgp=new DatagramPacket(data, data.length);
while(true){
s.receive(dgp); System.out.println(new String(data).trim());
System.out.println("Receive Data"); s.send(dgp);
}以上是我的udp协议的接收代码,但现在收到的数据显示都是乱码。有可能是跟数据的偏移量有关,DatagramPacket还有一个接口是带offset参数的,但不知道怎么用。另外还有什么原因会出乱码吗?
请高手指教一下,解决问题立即给分
System.out.println(new String(data,"gb2312").trim());
显示的乱码如下:
$JJDcG$!
请帮忙一下,各位!
byte[] data=new byte[100];
DatagramPacket dgp=new DatagramPacket(data, data.length);
这个接口吗?还是换成别的什么办法接收?
不好意思,没怎么用过JAVA。
//DGSServer.java
package com.fun;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;public class DGSServer {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
System.out.println("Start server...");
DatagramSocket s=new DatagramSocket(10000);
byte[] data=new byte[100];
DatagramPacket dgp=new DatagramPacket(data,data.length);
while(true){
s.receive(dgp);
System.out.println(new String(data).trim());
s.send(dgp);
}
}
catch(IOException e){
System.out.println(e.toString());
}
}
}
//DGSClient.java
package com.fun;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class DGSClient {
public static void main(String[] args) {
// TODO Auto-generated method stub
String host="localhost";
DatagramSocket s=null;
try {
s=new DatagramSocket();
byte[] buffer=new String("Send me a datagram").getBytes();
InetAddress ia=InetAddress.getByName(host);
DatagramPacket dgp=new DatagramPacket(buffer,buffer.length,ia,10000);
s.send(dgp);
byte [] buffer2 = new byte [100];
dgp=new DatagramPacket(buffer2,buffer2.length,ia,10000);
s.receive(dgp);
System.out.println(new String(dgp.getData()));
}
catch (IOException e) {
// TODO: handle exception
System.out.println(e.toString());
}
finally{
if(s!=null)
s.close();
}
}}
char是2个字节的。