Java的socket服务UDP协议
练习1
接收类
- package com.socket.demo;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- public class UDPReceiveDemo {
- public static void main(String[] args) throws IOException{
- System.out.println("接收端启动…………");
- /*
- 2、建立UDP的socket的服务,必须明白一个端口号
- 3、创建数据包。用于储存接收到的数据,方便用数据包对象的方法解析这些数据
- 4、使用DatagramSocket的receive方法将接收到的数据存储到数据包中
- 5、通过数据包的方法解析数据包中的数据
- 5、关闭socket服务
- */
- //udpsocket服务,使用DatagramSocket对象
- DatagramSocket ds=new DatagramSocket(10002);
- //使用DatagramPacket将数据封装到该对象中
- byte[] buf=new byte[1024];
- DatagramPacket dp=new DatagramPacket(buf, buf.length);
- //通过udp的socket服务将数据包发送出去,通过send方法
- ds.receive(dp);
- //通过数据包的方法解析数据包中的数据,比方。地址、端口、数据内容等
- String ip=dp.getAddress().getHostAddress();
- //String name=dp.getAddress().getHostName();
- int port=dp.getPort();
- String text=new String(dp.getData(),0,dp.getLength());
- //System.out.println("-----"+ip+"-----"+name+"-----"+port+"-----"+text);
- System.out.println("-----"+ip+"----------"+port+"-----"+text);
- //关闭资源
- ds.close();
- }
- }
发送类
- package com.socket.demo;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- import java.net.SocketException;
- import java.net.UnknownHostException;
- public class UDPSendDemo {
- public static void main(String[] args) throws IOException{
- System.out.println("发送端启动…………");
- /*
- * 1、创建udp传输的发送端
- 2、建立UDP的socket的服务
- 3、将要发送的数据封装到数据包中
- 4、通过udp的socket服务将数据包发送出去
- 5、关闭socket服务
- */
- //udpsocket服务。使用DatagramSocket对象
- DatagramSocket ds=new DatagramSocket(8888);//监听端口
- //将要发送的数据封装到数据包中
- String str="udp传输演示。go";
- //使用DatagramPacket将数据封装到该对象中
- byte[] buf=str.getBytes();
- DatagramPacket dp=
- new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.100"),10002);
- //通过udp的socket服务将数据包发送出去,通过send方法
- ds.send(dp);
- //关闭资源
- ds.close();
- }
- }
练习2
接收类:
- package com.socket.demo;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- public class UDPReceiveDemo2 {
- public static void main(String[] args) throws IOException{
- System.out.println("接收端启动…………");
- /*
- 2、建立UDP的socket的服务,必须明白一个端口号
- 3、创建数据包,用于储存接收到的数据,方便用数据包对象的方法解析这些数据
- 4、使用DatagramSocket的receive方法将接收到的数据存储到数据包中
- 5、通过数据包的方法解析数据包中的数据
- 5、关闭socket服务
- */
- //udpsocket服务。使用DatagramSocket对象
- DatagramSocket ds=new DatagramSocket(10003);
- while(true){
- //使用DatagramPacket将数据封装到该对象中
- byte[] buf=new byte[1024];
- DatagramPacket dp=new DatagramPacket(buf, buf.length);
- //通过udp的socket服务将数据包发送出去,通过send方法
- ds.receive(dp);//堵塞式的。
- //通过数据包的方法解析数据包中的数据,比方,地址、端口、数据内容等
- String ip=dp.getAddress().getHostAddress();
- //String name=dp.getAddress().getHostName();
- int port=dp.getPort();
- String text=new String(dp.getData(),0,dp.getLength());
- //System.out.println("-----"+ip+"-----"+name+"-----"+port+"-----"+text);
- System.out.println("-----"+ip+"----------"+port+"-----"+text);
- }
- //关闭资源
- //ds.close();
- }
- }
发送类:
- package com.socket.demo;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- public class UDPSendDemo2 {
- public static void main(String[] args) throws IOException{
- System.out.println("发送端启动…………");
- /*
- * 1、创建udp传输的发送端
- 2、建立UDP的socket的服务
- 3、将要发送的数据封装到数据包中
- 4、通过udp的socket服务将数据包发送出去
- 5、关闭socket服务
- */
- //udpsocket服务,使用DatagramSocket对象
- DatagramSocket ds=new DatagramSocket(9999);//监听端口
- //将要发送的数据封装到数据包中
- //String str="udp传输演示。go";
- BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//键盘输入
- String line=null;
- //使用DatagramPacket将数据封装到该对象中
- while((line=bufr.readLine())!=null){
- byte[] buf=line.getBytes();//
- DatagramPacket dp=
- new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.100"),10003);
- //通过udp的socket服务将数据包发送出去。通过send方法
- ds.send(dp);
- if("886".equals(line)){
- break;
- }
- }
- //关闭资源
- ds.close();
- }
- }
执行效果图:
接收
发送
Java的socket服务UDP协议的更多相关文章
- Java实例练习——基于UDP协议的多客户端通信
昨天学习了UDP协议通信,然后就想着做一个基于UDP的多客户端通信(一对多),但是半天没做出来,今天早上在参考了很多代码以后,修改了自己的代码,然后运行成功,在这里分享以下代码,也说一下自己的认识误区 ...
- socket之UDP协议,并发编程介绍,操作系统发展史
socket之UDP协议 1.UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection 参考 ...
- java 网络编程基础 UDP协议的Socket:DatagramSocket;广播Socket:MulticastSocket
什么是UDP协议: UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket 但这两个 Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象.Java 提供了 ...
- C#的Socket实现UDP协议通信
今天稍花化了一点时间,利用C#的Socket验证了UDP的通信,为接下来特地利用UDP做个分布式的通信仿真系统打下基础.众所周知,UDP 就是用户数据报协议,在互联网参考模型的第四层——传输层.与TC ...
- java 网络编程基础 UDP协议DatagramSocket,MulticastSocket 实现局域网聊天软件(Server + Client模式)
开发思路: 服务端两个Socket: UDP的DatagramSocket接收客户端消息. 广播multicastSocket 发送广播消息 客户端一个Socket: multicastSocke ...
- 网络Socket编程UDP协议例子
服务端代码 public class UDPChatServer { //通讯端口 private Integer port=8000; //数据报文的通讯通道对象 private DatagramC ...
- Socket的UDP协议在erlang中的实现
现在我们看看UDP协议(User Datagram Protocol,用户数据报协议).使用UDP,互联网上的机器之间可以互相发送小段的数据,叫做数据报.UDP数据报是不可靠的,这意味着如果客户端发送 ...
- java ->网络通信协议(UDP协议、TCP协议)
网络通信协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规 ...
- Java通过socket实现smtp协议发送邮件
import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java ...
随机推荐
- HDU4344(大数分解)
题目:Mark the Rope 题意就是给一个数,然后求这个数的所有因子中组成的最大的一个子集,其中1和本身除外,使得在这个子集中元素两两互素,求最大子集的元素个 数,并且求出和最大的值. 找规律就 ...
- redis作为mysql的缓存服务器(读写分离) (转)
一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录 ...
- 嵌入式Linux下BOA网页server的移植
**************************************************************************************************** ...
- xamarin跨平台iOS、Android 与Windows
http://xamarin.csdn.net/ Xamarin是一个行动App开发平台,提供跨平台开发能力,开发人员透过Xamarin开发工具与程序语言,即可开发出iOS.Android 与Wind ...
- 【Arduino】8地点LED数码管(3461BS)
淘宝买了一块3461BS的8地点LED数码管,婴儿就迫不及待地尝试,结果看到了文件,好家伙无Arduino测试程序. 莫急~莫急~无论如何串行操作,大不了呗瞎蒙! 以下几点是在更有趣的点瞎蒙: 1.须 ...
- Apache Phoenix JDBC 驱动和Spring JDBCTemplate的集成
介绍:Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排运行以生成标准的JDBC结果集. 直接使用HBase API.协同处理器与自己定义过滤器.对于简单查询来说,其性能 ...
- 快捷找jar包方式
通过例如以下站点查找jar包: 1.http://www.java2s.com/Code/Jar/o/Downloadorgapacheservicemixbundlescommonslang246j ...
- 将鼠标移到文本弹出一些字幕CSS达到,不及格JS达到
使用css实施内容流行,否js代码,下面的代码,可直接使用复制, 需要背景图到下面的地址下载,谢谢! 住址:http://download.csdn.net/detail/zurich1979/722 ...
- hdu1532 (最大流入门,EK算法)
看着这个博客 然后敲了hdu1532这个入门题,算是对最大流有点理解了 #include <stdio.h> #include <string.h> #include < ...
- FREESWITCH SEESION
SESSION SESSION为FS的核心概念之一,所以需要拿出来专门的分析下. 从以下几个方面进行分析,结构类型,资源的管理,对于呼叫的意义,规格. 1.结构类型 每一次呼叫会申请一个session ...