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

   本文实例讲述了Java基于socket服务实现UDP协议的方法。分享给大家供大家参考。具体如下:

  示例1:

  接收类:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

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();
}
}

  发送类:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

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:

  接收类:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

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();
}
}

  发送类:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

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程序设计有所帮助。

时间: 2024-10-05 23:18:54

Java基于socket服务实现UDP协议的方法的相关文章

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

本文实例讲述了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) throw

Java基于socket实现简易聊天室实例

  本文实例讲述了Java基于socket实现简易聊天室的方法.分享给大家供大家参考.具体实现方法如下: chatroomdemo.java ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 package com.socket.demo; import java.io.IOException; import java.net.DatagramSocket; public class ChatRoomDemo { /** * @param args * @thro

Java基于socket实现简易聊天室实例_java

本文实例讲述了Java基于socket实现简易聊天室的方法.分享给大家供大家参考.具体实现方法如下: chatroomdemo.java package com.socket.demo; import java.io.IOException; import java.net.DatagramSocket; public class ChatRoomDemo { /** * @param args * @throws IOException */ public static void main(S

scoket tcp ip 报文-Java 的 Socket服务端客户端以tcp/ip协议发送接收报文

问题描述 Java 的 Socket服务端客户端以tcp/ip协议发送接收报文 代码谁有模板,比如给你一个login报文,logout报文!!急急急!!! 解决方案 Android Socket 编程(WIFI 和 ADB) 有了发送数据的功能,再发送文件还需要分包等协议. 解决方案二: 这个不知道是不是你要的答案, 解决方案三: http://blog.csdn.net/u013301192/article/details/46336719 解决方案四: 网页上的1楼回复应该对你有用,祝你好运

java基于Socket做一个简单下载器_java

本文实例为大家分享了java基于Socket制作下载器的过程,及相关代码,供大家参考,具体内容如下 1.首先要建立一个服务器用来处理信息并给客户端传输文件(电脑)  我是用电脑开了一个WIFI,手机连上后使用scoket传输的  SERVERIP要根据自己实际情况更改.端口也可以随便更改0~65535,尽量选大一点  import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.Bu

浅析Java基于Socket的文件传输案例_java

本文实例介绍了Java基于Socket的文件传输案例,分享给大家供大家参考,具体内容如下 1.Java代码 package com.wf.demo.socket.socketfile; import java.net.*; import java.io.*; /** * 2.socket的Util辅助类 * * @author willson * */ public class ClientSocket { private String ip; private int port; private

Java基于Socket的文件传输实现方法_java

本文实例讲述了Java基于Socket的文件传输实现方法.分享给大家供大家参考,具体如下: 1. Java代码如下: package sterning; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.net.Ser

asp.net基于windows服务实现定时发送邮件的方法_实用技巧

本文实例讲述了asp.net基于windows服务实现定时发送邮件的方法.分享给大家供大家参考,具体如下: //定义组件 private System.Timers.Timer time; public int nowhour; public int minutes; public string sendTime; public Thread th; public string isOpen;//是否启用定时发送 public string strToEUser; public static i

Java基于Socket实现网络编程实例详解_java

一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机. 而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的. 目前较为流行的网络编程模型是客户机/服务器(C/S)结构.即通信双方一方作为服务器等待客户提出请求并予以响应.客户则