java__网络编程UDP
2015-09-19 16:51
573 查看
package cn.itcast.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /* 每个网络程序都有自己所处理的特定格式数据,如果接收到的数据不符合指定的格式,那么就会被当成垃圾数据丢弃。(加密..) 飞Q接收的数据格式: version:time :sender : ip: flag:content ; 版本号 时间 发送人 :IP: 发送的标识符(32): 真正的内容; 在udp协议中,有一个IP地址称作为广播地址,广播地址就是主机号为255地址。 给广播IP地址发送消息的时候,在同一个网络段的机器都可以接收 到信息。 192.168.15.255 */ //使用udp协议给飞Q发送消息。 public class FeiQDemo { public static void main(String[] args) throws IOException { // 建立udp的服务 DatagramSocket socket = new DatagramSocket(); // 准备数据,把数据封装到数据包中 String data = getData("feiQ你好!"); DatagramPacket packet = new DatagramPacket(data.getBytes(), data.getBytes().length, InetAddress.getByName("192.168.15.255"), 2425); // 发送数据 socket.send(packet); // 关闭资源 socket.close(); } // 把数据拼接成指定格式的数据 public static String getData(String content) { StringBuilder sb = new StringBuilder(); sb.append("1.0:"); sb.append(System.currentTimeMillis() + ":"); sb.append("习大大:"); sb.append("192.168.10.1:"); sb.append("32:"); sb.append(content); return sb.toString(); } }
群聊:
package cn.itcast.udp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; //群聊发送端 public class ChatSender extends Thread { @Override public void run() { try { //建立udp的服务 DatagramSocket socket = new DatagramSocket(); //准备数据,把数据封装到数据包中发送 BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in)); String line = null; DatagramPacket packet = null; while((line = keyReader.readLine())!=null){ //把数据封装 到数据数据包中,然后发送数据。 packet = new DatagramPacket(line.getBytes(), line.getBytes().length, InetAddress.getByName("192.168.15.255"), 9090); //把数据发送出去 socket.send(packet); } //关闭 资源 socket.close(); } catch (IOException e) { e.printStackTrace(); } } } package cn.itcast.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; //群聊接收端 public class ChatReceive extends Thread { @Override public void run() { try { //建立udp的服务,要监听一个端口 DatagramSocket socket = new DatagramSocket(9090); //准备空的数据包存储数据 byte[] buf = new byte[1024]; DatagramPacket packet = new DatagramPacket(buf, buf.length); boolean flag = true; while(flag){ socket.receive(packet); // packet.getAddress() 获取对方数据 包的IP地址对象。 System.out.println(packet.getAddress().getHostAddress()+"说:"+new String(buf,0,packet.getLength())); } //关闭资源 socket.close(); }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //开启线程的主程序 package cn.itcast.udp; public class ChatMain { public static void main(String[] args) { ChatReceive chatReceive = new ChatReceive(); chatReceive.start(); ChatSender chatSender = new ChatSender(); chatSender.start(); } }
package cn.itcast.udp; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.UnknownHostException; /* udp是一个不可靠(数据包可能会丢失)的协议 什么情况下数据包会出现丢失呢? 1.带宽不足 。 2.cpu的处理能力不足。 */ public class SafeSender { public static void main(String[] args) throws Exception { //建立udp的服务 DatagramSocket socket = new DatagramSocket(); //准备数据,数据封装到数据中发送 DatagramPacket packet = null; for(int i = 0 ; i< 10; i++){ //连续发送10个数据包 String data =i +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; packet = new DatagramPacket(data.getBytes(), data.getBytes().length, InetAddress.getLocalHost(), 9090); //发送数据包 socket.send(packet); } //关闭资源 socket.close(); } }
package cn.itcast.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class SafeReceive { public static void main(String[] args) throws IOException, Exception { //建立udp的服务 DatagramSocket socket = new DatagramSocket(9090); //建立空的数据包存储数据 byte[] buf = new byte[1024]; DatagramPacket packet = new DatagramPacket(buf, buf.length); //不断接收数据包 while(true){ socket.receive(packet); System.out.println(new String(buf,0,packet.getLength())); Thread.sleep(10); } } }
相关文章推荐
- 嵌入式linux系统网络配置
- 嵌入式控制(0)----linux系统网络配置
- 使用新建项目,引用底层库,运行时提示http://www.xinxizhan.cn/none-authorization.html。无授权解决方法
- HTTPS协议详解
- CentOS7_LAMP-https-discuz搭建,WordPress搭建及phpMyadmin搭建_2015091902
- java__网络编程01
- 网络端口查看命令-netstat/nmap
- HttpClient结合Structs2进行文件上传(Action返回字符串)
- HTTP 协议中GET和POST到底有哪些区别
- https 页面包含非安全传输内容解决方法
- 技术人生:故事之二十六 SMS网络警察
- 技术人生:故事之二十五 应用网络
- 利用ASIHttpRequest框架进行网络数据请求(一)—— 利用get请求数据
- 技术人生:故事之二十四 网络传真机
- Qt获取网络信息
- TCP/IP基础
- OSI七层模型及TCP/IP四层模型
- 解决Volley乱码问题
- apache 集成ssl 配置 https 证书
- iOS9 HTTP 不能正常使用的解决方法