直接看代码:
接收端:
DatagramSocket ds=new DatagramSocket(9999);
byte[] by=new byte[100];
DatagramPacket dp=new DatagramPacket(by,by.length);
ds.receive(dp);
System.out.println(new String(by).trim());
ds.close();发送端: DatagramSocket ds=new DatagramSocket();
String str="今天星期一";
DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length(),
InetAddress.getByName("127.0.0.1"),9999);
ds.send(dp);
ds.close();接收结果:
今天?
接收端:
DatagramSocket ds=new DatagramSocket(9999);
byte[] by=new byte[100];
DatagramPacket dp=new DatagramPacket(by,by.length);
ds.receive(dp);
System.out.println(new String(by).trim());
ds.close();发送端: DatagramSocket ds=new DatagramSocket();
String str="今天星期一";
DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length(),
InetAddress.getByName("127.0.0.1"),9999);
ds.send(dp);
ds.close();接收结果:
今天?
解决方案 »
- 怎么用多线程实现进度条同步上传
- 我想写一个jsp审核页面,具体内容如下,
- tomcat无法打开http://localhost:8080 但是却可以打开http://127.0.0.1:8080/
- 我想实现像xici.net的tree导航系统,谁能提供的源代码?
- 页面上有一个日期,传到FormBean里面用什么类型的值?
- parent.document.getElementById("frame").style.height=document.body.scrollHeight;这句是什么时候意思啊?
- 关于jsp变量声明的问题!谢谢!
- mysql问题
- 菜鸟问题-字符的比较
- 关于java web做即时聊天
- 这是tomcat的问题吗? 数组下标溢出!!
- 一年的网站运营费 从开发到运营 怎么算?
但是使用我经常写的代码 在你的基础上能够得出正确结果
楼主可以测试一下:import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPClinet { public static void main(String[] args)throws Exception {
String str="今天星期一";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
//dos.writeBytes(str);
dos.writeUTF(str);
byte[] buf = baos.toByteArray();
DatagramSocket ds=new DatagramSocket();
DatagramPacket dp=new DatagramPacket(buf,buf.length,
InetAddress.getByName("127.0.0.1"),9999);
ds.send(dp);
ds.close(); }}import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UDPServer {
public static void main(String[] args) {
DatagramSocket ds;
try {
ds = new DatagramSocket(9999);
byte[] by=new byte[100];
DatagramPacket dp=new DatagramPacket(by,by.length);
ds.receive(dp);
ByteArrayInputStream bais = new ByteArrayInputStream(by);
DataInputStream dis = new DataInputStream(bais);
System.out.println(dis.readUTF());
//System.out.println(new String(by).trim());
ds.close();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}}能力有限 不能深层次解答字符集编码的问题 如果有高手 希望给予指点! 万分感谢
一般会编码成GBK的,JAVA默认使用UTF-8的编码,所以取出来是乱码了。
发送的时候:str.getBytes("utf-8");
接收的时候:new String(str.getBytes(),"utf-8");
这样估计就没有问题了
InetAddress.getByName("127.0.0.1"),9999);
换成:
DatagramPacket dp=new DatagramPacket(str.getBytes(),str.getBytes.length,
InetAddress.getByName("127.0.0.1"),9999);
就可以得到正确结果了拉!
你的长度不对啊!