100分相送!关于Datagrampacket 你只需要这样定义数据类型就可以啦public class abc{int aa;String bb;char[ ] cc = new char[10];private void abc( ){}} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我太笨了,你还是给我一段具体的发送代码吧!我其实就是不知道如何把class abc发出去 不好意思,我对udp的发送不懂,还是另请高手吧 public class abc{int aa;String bb;char[ ] cc = new char[10];public static int port = 1000;InetAddress address = InetAddress.getByName("server address");public abc( ){} public byte[] wrapIt(){ String message = ""; message += "0004"; message += String.valueOf(aa); message += DataPrefix.pad(4, "0", bb.length()); message += bb; message += DataPrefix.pad(4, "0", (String.valueOf(cc)).length()); message += String.valueOf(cc); return message.getBytes() }public void send(){try{byte[] buff = abc.wrapIt();DatagramPacket packet = new DatagramPacket(buf, buf.length, address, port);DatagramSocket client = new DatagramSocket();client.send(packet);}catch(Exception e){ e.printStackTrace();}}自己瞎写了几句,没有什么作用, 你参靠一下别人的程序把 DataPrefix是什么东西?在java的哪个包里? java里有没有像c++那样 “\0”的东西? 如CodeFans得程序已经实现的差不多,主要是DataGramePacket和InetAddress的协作,主要如下InetAddress INTEA=InetAddress.getByName("IP地址");DatagramPacket datap=new DatagramPacket(data,data.length(),intea,端口);DatagramSocket sendSocket=new DataGramSocket(端口);sendSocket.send(datap)//这里就会按IP地址的端口发送了。只要是,data是byte型的,而你也需要数据带结构,定义为一个class并声明它序列化接口,然后用WriteObject的方法写到Byte[]类型的data里面,就可以实现udp发送了 谢谢各位,我自己写成了。用vc打开其16进制代码与vc开发的输出文件一致,但问题又来了,比如我生成的代码是这样的:04 00 00 00 31 33 30 30 30 30 30 30 30 31 30 0000 00 00 00 00 00 00 00 31 33 30 30 30 30 30 3030 31 31 00 00 00 00 00 00 00 00 00头4个字节“04 00 00 00”是那个int,然后20个字节中用11位手机号码13000000010,又用了20个字节存储13000000011假设我不知道20个字节中手机号码是多少位,那我怎么能这20个字节里取出实际的字符串呢,不知道java里有没有像vc那样遇到\0就结束的功能 计时器Timer有没有等待任务结束的方法 String编译器优化问题 求救各位大侠 JFileChooser fileChooser = new JFileChooser();这句出现空指针异常 string的一个实例的输出 java, 窗口响应 关于读取整个目录的问题 有关时间的小问题 急问题:想把一个文件(例如文本)里的内容导出成为一个String,有什么方法吗?谢谢! 有机会做软件工程方面工作,是放弃还是继续做Java的开发? 怎么找到上次new的线程? 投石问路先,欢迎大家指点
int aa;
String bb;
char[ ] cc = new char[10];
public static int port = 1000;
InetAddress address = InetAddress.getByName("server address");public abc( ){
} public byte[] wrapIt(){
String message = "";
message += "0004";
message += String.valueOf(aa);
message += DataPrefix.pad(4, "0", bb.length());
message += bb;
message += DataPrefix.pad(4, "0", (String.valueOf(cc)).length());
message += String.valueOf(cc);
return message.getBytes() }public void send(){try{byte[] buff = abc.wrapIt();
DatagramPacket packet = new DatagramPacket(buf, buf.length, address, port);DatagramSocket client = new DatagramSocket();
client.send(packet);}catch(Exception e){
e.printStackTrace();
}
}自己瞎写了几句,没有什么作用, 你参靠一下别人的程序把
主要如下
InetAddress INTEA=InetAddress.getByName("IP地址");
DatagramPacket datap=new DatagramPacket(data,data.length(),intea,端口);
DatagramSocket sendSocket=new DataGramSocket(端口);
sendSocket.send(datap)//这里就会按IP地址的端口发送了。
只要是,data是byte型的,而你也需要数据带结构,定义为一个class并声明它序列化接口,然后用WriteObject的方法写到Byte[]类型的data里面,就可以实现udp发送了
04 00 00 00 31 33 30 30 30 30 30 30 30 31 30 00
00 00 00 00 00 00 00 00 31 33 30 30 30 30 30 30
30 31 31 00 00 00 00 00 00 00 00 00
头4个字节“04 00 00 00”是那个int,然后20个字节中用11位手机号码13000000010,又用了20个字节存储13000000011
假设我不知道20个字节中手机号码是多少位,那我怎么能这20个字节里取出实际的字符串呢,不知道java里有没有像vc那样遇到\0就结束的功能