Java网络编程之UDP通信例子
2015-09-15 22:26
726 查看
UDPServer.java
Client.java
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * @description * @date:(2015-9-14 下午11:07:55) * @author Administrator * @version v1.0 * @since v1.0 * * Modified history * * Modified date: * Modifier user: * description: * * */ public class UDPServer { public static void main(String[] args) throws IOException { //监听8986端口 DatagramSocket server=new DatagramSocket(8986); byte[] recvBuf=new byte[1024]; //DatagramPacket(byte[] buf, int length):将数据包中Length长的数据装进Buf数组,一般用来接收客户端发送的数据 DatagramPacket recvpacket=new DatagramPacket(recvBuf, recvBuf.length); //receive方法是阻塞式的,知道收到客户端请求才会往下走 //接收数据报文到recvpacket中 server.receive(recvpacket); String recvStr=new String(recvpacket.getData(),0,recvpacket.getLength()); System.out.println("receive from client:"+recvStr); int port=recvpacket.getPort();//发送端地址 //发送端地址 InetAddress addr=recvpacket.getAddress(); //响应数据 String response="hello! I'm Server"; byte[] sendBuf=response.getBytes(); //从sendBuf数组中,取出Length长的数据创建数据包对象,目标是clientAddress地址,clientPort端口 //,通常用来发送数据给客户端。 DatagramPacket sendpacket=new DatagramPacket(sendBuf, sendBuf.length,addr,port); //发送报文sendpacket到目的地 server.send(sendpacket); server.close(); } }
Client.java
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * @description * @date:(2015-9-14 下午11:17:12) * @author Administrator * @version v1.0 * @since v1.0 * * Modified history * * Modified date: * Modifier user: * description: * * */ public class Client { public static void main(String[] args) throws IOException { DatagramSocket client=new DatagramSocket(); String sendStr="Hello! I'm client"; byte[] sendBuf=sendStr.getBytes(); InetAddress addr=InetAddress.getByName("127.0.0.1"); int port=8986; //从Buf数组中,取出Length长的数据创建数据包对象,目标是clientAddress地址,clientPort端口,通常用来发送数据 DatagramPacket sendpacket=new DatagramPacket(sendBuf, sendBuf.length, addr, port); //发送报文sendpacket到目的地 client.send(sendpacket); byte[] recvBuf=new byte[1024]; DatagramPacket recvPacket=new DatagramPacket(recvBuf,recvBuf.length); //接收数据报文到recvpacket中 client.receive(recvPacket); String recvStr=new String(recvPacket.getData(),0,recvPacket.getLength()); System.out.println("receive from server:"+recvStr); client.close(); } }
相关文章推荐
- 【第六篇】Volley之https相关
- hdu 5441 (2015长春网络赛E题 带权并查集 )
- 网络监听万能代码
- 网络编程
- 计算机网络可靠传输的实现 (窗口)
- int open(const char * pathname, int flags); http://c.biancheng.net/cpp/html/238.html
- 安卓中处理http超时
- TCP与UDP的区别与用途
- linux下的网络命令netstat
- win7 http://localhost不能访问解决方法
- 封装多线程的HttpClient
- 封装多线程的HttpClient
- windows下TCP服务器和客户端的实现
- Android第九讲——网络(二) HttpUrlConnection
- TCP三次握手
- Netty5入门学习笔记003-TCP粘包/拆包问题的解决之道(下)
- Netty5入门学习笔记002-TCP粘包/拆包问题的解决之道(上)
- TCP协议三次握手
- 基本TCP套接字编程
- Elven Postman【HDU 5444】【长春网络赛】