javaudp
1. java udp 有必要用NIO吗AIO支持UDP吗
这得看你的程序具体的业务量了。
从性能上来说NIO是比较合适的。AIO比较符合大吞吐量的网络程序。
2. 如何用java实现UDP的可靠传输
我记忆中可靠的传输应该类似TCP的三次握手:
1.发送方向接收方发送一个随机数。
2.接收方收到随机数后将其+1,再回传给发送方。
3.发送方收到随机数判断其是否被+1,如果是代表双方的传递线路是通畅的,可以正式开始传送数据。
3. java 怎么用UDP实时接收数据
我自己写的代码:
importjava.io.IOException;
importjava.net.DatagramPacket;
importjava.net.DatagramSocket;
importjava.net.InetAddress;
importjava.net.SocketException;
importjava.net.UnknownHostException;
publicclassUdpRecvDemo
{
publicstaticvoidmain(String[]args)throwsIOException
{
Recv();
}
publicstaticvoidRecv()throwsIOException
{
System.out.println("接受开始......");
DatagramSocketds=newDatagramSocket(3388);
while(true)
{
byte[]buf=newbyte[1024];
DatagramPacketdp=newDatagramPacket(buf,buf.length);
ds.receive(dp);
System.out.println(ds);
Stringip=dp.getAddress().getHostAddress();
intport=dp.getPort();
Stringtext=newString(dp.getData(),0,dp.getLength());
if(text.equals("exit"))
{
System.out.println(ip+"退出会话......");
break;
}
System.out.println(ip+":"+port+"===>me"+text);
}
ds.close();
}
}
4. java如何发送UDP报文
建议的代码,这个官网里有例子
5. 我写了一个Java的UDP网络通讯,就是在本机的时候就可以接收到消息,但是两台机器就不行了,详细:
先ping一下对方的ip,看有没有ping通呢
6. java 中怎么使用UDP
发送步骤:
使用 DatagramSocket(int port) 建立socket(套间字)服务。
将数据打包到DatagramPacket中去
通过socket服务发送 (send()方法)
关闭资源
importjava.io.IOException;
importjava.net.*;
publicclassSend{
publicstaticvoidmain(String[]args){
DatagramSocketds=null;//建立套间字udpsocket服务
try{
ds=newDatagramSocket(8999);//实例化套间字,指定自己的port
}catch(SocketExceptione){
System.out.println("Cannotopenport!");
System.exit(1);
}
byte[]buf="Hello,Iamsender!".getBytes();//数据
InetAddressdestination=null;
try{
destination=InetAddress.getByName("192.168.1.5");//需要发送的地址
}catch(UnknownHostExceptione){
System.out.println("Cannotopenfindhost!");
System.exit(1);
}
DatagramPacketdp=
newDatagramPacket(buf,buf.length,destination,10000);
//打包到DatagramPacket类型中(DatagramSocket的send()方法接受此类,注意10000是接受地址的端口,不同于自己的端口!)
try{
ds.send(dp);//发送数据
}catch(IOExceptione){
}
ds.close();
}
}
接收步骤:
使用 DatagramSocket(int port) 建立socket(套间字)服务。(我们注意到此服务即可以接收,又可以发送),port指定监视接受端口。
定义一个数据包(DatagramPacket),储存接收到的数据,使用其中的方法提取传送的内容
通过DatagramSocket 的receive方法将接受到的数据存入上面定义的包中
使用DatagramPacket的方法,提取数据。
关闭资源。
importjava.net.*;
publicclassRec{
publicstaticvoidmain(String[]args)throwsException{
DatagramSocketds=newDatagramSocket(10000);//定义服务,监视端口上面的发送端口,注意不是send本身端口
byte[]buf=newbyte[1024];//接受内容的大小,注意不要溢出
DatagramPacketdp=newDatagramPacket(buf,0,buf.length);//定义一个接收的包
ds.receive(dp);//将接受内容封装到包中
Stringdata=newString(dp.getData(),0,dp.getLength());//利用getData()方法取出内容
System.out.println(data);//打印内容
ds.close();//关闭资源
}
}
7. JAVA中如何完成UDP包的封装
给你一段代码,或许可以帮到你……
public class SendSideTest {
/*发送数据 */
public static void main(String[] args) throws IOException {
//1 DatagramSocket是用来接收发送数据的
DatagramSocket ds = new DatagramSocket();
//2 发送什么
byte[] s="helloabcdef".getBytes();
//3 发送到哪,发送到本机
InetAddress clientAddress=InetAddress.getLocalHost();
//4 搭建一个outDataPacket相当于一个邮包
//把发送的内容,发送的地址,发送的端口,写在邮包上
DatagramPacket op = null;
op=new DatagramPacket(s, s.length,clientAddress, 9999);
//5 通过一个DatagramPacket将数据发送到客户端,
//客户端的地址由DatagramPacket指定,即写在邮包上
ds.send(op);
System.out.println("数据已经成功发送");
}
}
public class ReceiveSideTest {
/* 接收方*/
public static void main(String[] args) throws IOException {
//1 DatagramSocket相当于建立一个服务器 在9999监听
DatagramSocket ds = new DatagramSocket(9999);
//2 DatagramPacket是用来接收发送的数据的 要有容器接收
byte[] msg = new byte[100];
DatagramPacket ip = new DatagramPacket(msg, msg.length);
//3调用receive方法接收数据到DatagramPacket 中
//数据又由DatagramPacket放入msg
ds.receive(ip);
String msgs = new String(msg);
System.out.println(msgs);
//4通过DatagramPacket得到地址和端口 把发送者打印出来
InetAddress clientAddress = ip.getAddress();
int clientPort = ip.getPort();
System.out.println("发送者:"+clientAddress);
System.out.println("发送端口:"+clientPort);
}
}
8. java中UDP文件传输怎么实现
java UDP连接,如果要发送文件的话,你只能自己定义一系列的协议
因为TCP UDP 双方发送都是二进制数据
那么这个实现非常复杂
得不停的发送数据,写数据,建议使用http协议
9. 一个简单java实现udp通信
UDP也可以和TCP那样遍历list然后发送啊
客户端向外面开一个UDP端口接受数据报
然后服务器这边要是有消息要发送就直接发送数据报包就可以了嘛
UDP都不用保持着连接的,比TCP还简单些
另外也可以用组播来实现,搜索下java UDP 组播,你能找到不少实例性的代码,也有聊天室的代码
10. 用java实现UDP校验和计算
public static void main(String[] arg) {
String str = "hello";
System.out.println(toByte(str));
// 得到结果:byte[] sbytes = { 0X68, 0X65, 0X6c, 0X6c, 0X6f };
}
private static String toByte(String str) {
byte[] bytes = str.getBytes();
StringBuffer sb = new StringBuffer();
sb.append("byte[] sbytes = { ");
for (int i = 0; i < bytes.length; i++) {
sb.append(String.format("0X%s", Integer.toHexString(bytes[i])));
if (i < bytes.length - 1) {
sb.append(", ");
}
}
sb.append(" };").append("\r\n");
return sb.toString();
}