接收方
public static void rec(){
try{
DatagramSocket ds=new DatagramSocket(6000);
byte [] buf=new byte[100];
DatagramPacket dp=new DatagramPacket(buf,100);
ds.receive(dp);
System.out.println(new String(buf,0,dp.getLength()));
ds.close();
}
catch(Exception ex){
ex.printStackTrace();
}
发送方
public static void send(){
try{
DatagramSocket ds=new DatagramSocket();
String sstr="你好";
DatagramPacket dp= new DatagramPacket(sstr.getBytes(),sstr.length(),InetAddress.getLocalHost(),6000);
ds.send(dp);
ds.close();
}在发送方的String 中如果用中文的话,就会出现接收数据不完整,如果用英文的话,一点
问题都没有,不知道什么原因
public static void rec(){
try{
DatagramSocket ds=new DatagramSocket(6000);
byte [] buf=new byte[100];
DatagramPacket dp=new DatagramPacket(buf,100);
ds.receive(dp);
System.out.println(new String(buf,0,dp.getLength()));
ds.close();
}
catch(Exception ex){
ex.printStackTrace();
}
发送方
public static void send(){
try{
DatagramSocket ds=new DatagramSocket();
String sstr="你好";
DatagramPacket dp= new DatagramPacket(sstr.getBytes(),sstr.length(),InetAddress.getLocalHost(),6000);
ds.send(dp);
ds.close();
}在发送方的String 中如果用中文的话,就会出现接收数据不完整,如果用英文的话,一点
问题都没有,不知道什么原因
http://discussion.forum.nokia.com/forum/showthread.php?s=&threadid=36701
原:
DatagramPacket dp= new DatagramPacket(sstr.getBytes(),sstr.length(),InetAddress.getLocalHost(),6000);
改正后
DatagramPacket dp= new DatagramPacket(sstr.getBytes(),sstr.getBytes().length,InetAddress.getLocalHost(),6000);
data length 应该是字节数组的长度,而不是字符串长度,并且与字符编码无关~ 这样就绝没什么问题拉
ren1xiao1yao 很好啊,你讲的一下子就解决问题了,根本就不是系统和JVM字符集的问题sstr.getBytes().length 这里的length是什么,是字段吗,API哪里有讲
在 你好后面有 一个空格,,你多加一个或者删除一个,绝对可以输出中文不知道你用过 汉化的老板的 JC 没有,上面可以把 一个中文 用鼠标 点成2半
在输入输出中 读中文最好用 用字符流,那样才是读的一个字String sstr= "你好 "== 你?
String sstr= "你好A"== 你?你可以自己44看