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 ...
随机推荐
- JavaScript 使用Document记录cookie
cookie对于我们使用者来说,有时帮助还是挺大的,比方对于一些不是特别重要的站点,比方公司的測试平台,每次登陆都要手动输入username和password 非常繁琐.所以为了更少的引入其他框架,就 ...
- 我的EJB学习历程
http://blog.csdn.net/sinapaper/archive/2004/06/28/28659.aspx http://blog.csdn.net/sinapaper/archive/ ...
- HDU 3217 Health(状压DP)
Problem Description Unfortunately YY gets ill, but he does not want to go to hospital. His girlfrien ...
- JavaScript中的对象(一)
Email:longsu2010 at yeah dot net 最近我和朋友谈起JavaScript中对象的问题.朋友以写JavaScript为生,而且生活的很好,然而我发现他并不真正懂这们语言的某 ...
- xcode Workspaces
A workspace is an Xcode document that groups projects and other documents so you can work on them to ...
- 利用Nginx构建负载均衡server
大家都知道.一个域名相应一个IP地址,而一个WebSite则相应一个IP地址上相应port服务的应用程序(或位置).而大型站点的并发訪问量很大,这些站点是怎样在一台Webserver上实现负载均衡的呢 ...
- java使用AES加密解密 AES-128-ECB加密
java使用AES加密解密 AES-128-ECB加密 import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; impo ...
- V5
系统设置--关于手机--版本号点5下--进去开发模式--打开开发选项--打开USB调试.然后在连接第三方助手软件 http://bbs.ztehn.com/thread-19037-1-1.html
- maven中的java库
/* * * <dependency> <groupId>io.netty</groupId> <artifactId>n ...
- hdu 4836 The Query on the Tree(线段树or树状数组)
The Query on the Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...