udp编程示例
服务器端:
package socket;
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) throws IOException {
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);//声明一个用来接收数据的“包裹”
DatagramSocket ds = new DatagramSocket(5678);//指定的是UDP中的端口号5678,在TCP中,还有另外一个端口号为5678的端口
while(true){
ds.receive(dp); //阻塞式的
System.out.println(new String(buf,0,dp.getLength()));//dp中获取的数据的长度
}
}
}
客户端:
立即学习“Java免费学习笔记(深入)”;
package socket;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
public class UDPClient {
public static void main(String[] args) throws IOException {
byte[] buf = new String("Hello").getBytes();
//UDP是无连接的,所以要在发送的数据包裹中指定要发送到的ip:port
DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress("127.0.0.1", 5678));
DatagramSocket ds = new DatagramSocket(9999); //指明发送端的端口号
ds.send(dp);
ds.close();
}
}
说明:
1. 严格意义上来讲,UDP没有server和client之分,不像TCP中有ServerSocket和Socket,UDP中只有DatagramSocket。
2. UDP和TCP的端口是分开的,例如UDP有一个端口号为5678的端口,TCP也有一个端口号为5678的端口。
3. UDP是无连接的,所以要在发送的数据包裹中指定要发送到的ip:port。
本支付接口的特点,主要是用xml文件来记录订单详情和支付详情。代码比较简单,只要将里面的商户号、商户key换成你自己的,将回调url换成你的网站,就可以使用了。通过这个实例也可以很好的了解一般在线支付接口的基本工作原理。其中的pay.config文件记录的是支付详情,order.config是订单详情
0
4. 如果要发送long、int等类型的数据,则需要使用到ByteArrayOutputStream、DataOutputStream、ByteArrayInputStream、ByteArrayInputStream流类型,如下:
服务器端:
package socket;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
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) throws IOException {
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
DatagramSocket ds = new DatagramSocket(5678);
ByteArrayInputStream bais = null;
DataInputStream dos = null;
while(true){
ds.receive(dp);
bais = new ByteArrayInputStream(buf);
dos = new DataInputStream(bais);
System.out.println(dos.readLong());
}
}
}
客户端:
立即学习“Java免费学习笔记(深入)”;
package socket;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
public class UDPClient {
public static void main(String[] args) throws IOException {
byte[] buf = null;
long l = 100000L;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeLong(l);
buf = baos.toByteArray();
DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress("127.0.0.1", 5678));
DatagramSocket ds = new DatagramSocket(9999);
ds.send(dp);
ds.close();
dos.close();
}
}感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
更多java Socket UDP实例详解相关文章请关注PHP中文网!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号