Java基于socket服务实现UDP协议的方法

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • java 基础知识之网络通信(TCP通信、UDP通信、多播以及NIO)总结

    java 基础知识之网路通信总结 在这篇文章里,我们主要讨论如何使用Java实现网络通信,包括TCP通信.UDP通信.多播以及NIO. TCP连接 TCP的基础是Socket,在TCP连接中,我们会使用ServerSocket和Socket,当客户端和服务器建立连接以后,剩下的基本就是对I/O的控制了. 我们先来看一个简单的TCP通信,它分为客户端和服务器端. 客户端代码如下: 简单的TCP客户端 import java.net.*; import java.io.*; public class

  • java Socket UDP实例详解

    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

  • Java基于UDP协议实现简单的聊天室程序

    最近比较闲,一直在抽空回顾一些Java方面的技术应用. 今天没什么事做,基于UDP协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对Java网络编程方面的一个简单回忆. 先看一下效果: 实现的效果可以说是非常非常简单,但还是可以简单的看到一个实现原理.  "聊天室001"的用户,小红和小绿相互聊了两句,"聊天室002"的小黑无人理会,在一旁寂寞着. 看一下代码实现: 1.首先是消息服务器的实现,功能很简单: •将客户端的信息(进入了哪一

  • JAVA编程实现UDP网络通讯的方法示例

    本文实例讲述了JAVA编程实现UDP网络通讯的方法.分享给大家供大家参考,具体如下: UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议. 在OSI模型中,在第四层--传输层,处于IP协议的上一层.UDP有不提供数据包分组.组装和不能对数据包进行排序的缺点: 也就是说,当报文发送之后,是无法得知其是否安全完整到达的.UDP用来支持那些需要在计算机之间传输数据的网络应用. 采用UDP协议要先把数据定义成数据报(Datagram)并在数据报中指明数据所要达到

  • java中TCP/UDP详细总结

    TCP/UDP:TCP主要是面向连接的协议,它包含有建立和拆除连接,保证数据流的顺序和正确性等功能. 每次对TCP中间的数据操作相当于对一个数据流进行访问.它最典型的特征就是那三次握手的建立连接过程.Server端所要做的事情主要是建立一个通信的端点,然后等待客户端发送的请求.典型的处理步骤如下: 1. 构建一个ServerSocket实例,指定本地的端口.这个socket就是用来监听指定端口的连接请求的. 2.重复如下几个步骤: a. 调用socket的accept()方法来获得下面客户端的连

  • JAVA编程实现TCP网络通讯的方法示例

    本文实例讲述了JAVA编程实现TCP网络通讯的方法.分享给大家供大家参考,具体如下: TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. 由IETF的RFC 793定义,在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能. 基于TCP网络通讯实现的类主要有服务器端的ServerSocket用客户端的Socket. 通讯流程: 打开服务器,等待客户端连接-->客户端连接上服务器-->数据通讯. 代码

  • 浅谈java的TCP和UDP编程(附实例讲解)

    TCP 客户端: import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class MyClient { public static void main(String[] args) throws Exception{ Socket socket = null; BufferedReader in = n

  • 基于java TCP网络通信的实例详解

    JAVA中设计网络编程模式的主要有TCP和UDP两种,TCP是属于即时通信,UDP是通过数据包来进行通信,UDP当中就会牵扯到数据的解析和传送.在安全性能方面,TCP要略胜一筹,通信过程中不容易出现数据丢失的现象,有一方中断,两方的通信就会结束,UDP数据包传送的过程当中,一方中断,数据包有很大的可能丢失,还有可能传来的数据包的顺序是错乱的:在效率方面,UDP要比TCP快的不只是一点点的问题,若终端有解析数据方法的函数,数据包就会源源不断的传送过来,然后反馈回去.以上都是我自己的理解,下面是关于

  • java 中模拟UDP传输的发送端和接收端实例详解

    java 中模拟UDP传输的发送端和接收端实例详解 一.创建UDP传输的发送端 1.建立UDP的Socket服务: 2.将要发送的数据封装到数据包中: 3.通过UDP的Socket服务将数据包发送出去: 4.关闭Socket服务. import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class

  • java编程实现基于UDP协议传输数据的方法

    本文实例讲述了java编程实现基于UDP协议传输数据的方法.分享给大家供大家参考,具体如下: UDP协议(User Datagram Protocol,用户数据报协议)不同于TCP协议,它是不可能靠的,但是它比TCP协议具有更快的传输速度,UDP发送的数据单元称为数据报,当网络传输UDP传输UDP数据报是无法保证数据能够到达目的地,也无法保证按发送的顺序到达目的地,也就是说先发送了"hello",再发送了"world",但接收方可能会先收到"world&q

  • java中UDP简单聊天程序实例代码

    学过计算机网络通信的都知道,计算机之间传送数据由两种,即TCP通信和UDP通信.TCP是可靠的面向连接的通信协议,二UDP是不可靠的面向无连接的通信协议. java中有基于TCP的网络套接字通信,也有基于UDP的用户数据报通信,UDP的信息传输速度快,但不可靠! 基于UDP通信的基本模式: (1)将数据打包,称为数据包(好比将信件装入信封一样),然后将数据包发往目的地. (2)接受别人发来的数据包(好比接收信封一样),然后查看数据包中的内容. 客户机 复制代码 代码如下: package com

  • 基于Java回顾之网络通信的应用分析

    TCP连接 TCP的基础是Socket,在TCP连接中,我们会使用ServerSocket和Socket,当客户端和服务器建立连接以后,剩下的基本就是对I/O的控制了. 我们先来看一个简单的TCP通信,它分为客户端和服务器端. 客户端代码如下: 复制代码 代码如下: 简单的TCP客户端  import java.net.*; import java.io.*; public class SimpleTcpClient { public static void main(String[] args

随机推荐