UDP通讯:服务器与客户端
2010-01-10 17:00
429 查看
ava
UDP通信(DatagramPacket类、DatagramSocket类、InetAddress类)
一、
DatagramPacket类:
如果把DatagramSocket比作创建的港口码头,那么DatagramPacket就是发送和接收数据的集装箱。
构造函数:一个用来接收数据,一个用来发送数据
public DatagramPacket(byte[] buf,int length)
//接收数据
构造 DatagramPacket 用来接收长度为 ilength 的包。
public DatagramPacket(byte[] buf,int
length,InetAddress address,int port)
构造数据报文包用来把长度为 ilength 的包传送到指定宿主的指定的端口号。
getAddress() 返回接收或发送此数据报文的机器的 IP 地址。
getData() 返回接收的数据或发送出的数据。
getLength() 返回发送出的或接收到的数据的长度。
getPort() 返回接收或发送该数据报文的远程主机端口号。
二、DatagramSocket类
此类表示用来发送和接收数据报包的套接字。 数据报套接字是包投递服务的发送或接收点。
DatagramSocket(int port) 创建数据报套接字并将其绑定到本地主机上的指定端口。
DatagramSocket(int port, InetAddress laddr) 创建数据报套接字,将其绑定到指定的本地地址。
receive(DatagramPacket p) 从此套接字接收数据报包。
void send(DatagramPacket p) 从此套接字发送数据报包。
bind(SocketAddress addr) 将此 DatagramSocket 绑定到特定的地址和端口。
void close() 关闭此数据报套接字。
void connect(InetAddress address, int port) 将套接字连接到此套接字的远程地址。
void connect(SocketAddress addr) 将此套接字连接到远程套接字地址(IP 地址 + 端口号)。
void disconnect() 断开套接字的连接。
getInetAddress() 返回此套接字连接的地址。
InetAddress getLocalAddress() 获取套接字绑定的本地地址。
三、InetAddress类
InetAddress用于表示计算机IP地址的一个类,而在日常应用中的IP地址用"192.168.0.1",
"WWW.it315.org
"等字符串格式表示的。
getByName方法
getHostAddress方法
三、示例
1、客户端
客户端向服务器(端口:2000)发送数据
2、服务器
接收从客户端发过来的数据。
UDP通信(DatagramPacket类、DatagramSocket类、InetAddress类)
一、
DatagramPacket类:
如果把DatagramSocket比作创建的港口码头,那么DatagramPacket就是发送和接收数据的集装箱。
构造函数:一个用来接收数据,一个用来发送数据
public DatagramPacket(byte[] buf,int length)
//接收数据
构造 DatagramPacket 用来接收长度为 ilength 的包。
public DatagramPacket(byte[] buf,int
length,InetAddress address,int port)
构造数据报文包用来把长度为 ilength 的包传送到指定宿主的指定的端口号。
getAddress() 返回接收或发送此数据报文的机器的 IP 地址。
getData() 返回接收的数据或发送出的数据。
getLength() 返回发送出的或接收到的数据的长度。
getPort() 返回接收或发送该数据报文的远程主机端口号。
二、DatagramSocket类
此类表示用来发送和接收数据报包的套接字。 数据报套接字是包投递服务的发送或接收点。
DatagramSocket(int port) 创建数据报套接字并将其绑定到本地主机上的指定端口。
DatagramSocket(int port, InetAddress laddr) 创建数据报套接字,将其绑定到指定的本地地址。
receive(DatagramPacket p) 从此套接字接收数据报包。
void send(DatagramPacket p) 从此套接字发送数据报包。
bind(SocketAddress addr) 将此 DatagramSocket 绑定到特定的地址和端口。
void close() 关闭此数据报套接字。
void connect(InetAddress address, int port) 将套接字连接到此套接字的远程地址。
void connect(SocketAddress addr) 将此套接字连接到远程套接字地址(IP 地址 + 端口号)。
void disconnect() 断开套接字的连接。
getInetAddress() 返回此套接字连接的地址。
InetAddress getLocalAddress() 获取套接字绑定的本地地址。
三、InetAddress类
InetAddress用于表示计算机IP地址的一个类,而在日常应用中的IP地址用"192.168.0.1",
"WWW.it315.org
"等字符串格式表示的。
getByName方法
getHostAddress方法
三、示例
1、客户端
package iism.udp.client; import java.io.*; import java.net.*; public class UdpHeartBeatClient { private DatagramSocket cli; private DatagramPacket pac; private byte sb[]; private String sen; public UdpHeartBeatClient() { Init(); } public void Init() { // SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); try { // 指定端口号,避免与其他应用程序发生冲突 cli = new DatagramSocket(2001); sb = new byte[1024]; String a[]=new String[]{"33070421100048","123456783","123456784","123456782","123456785"}; for(int i=0;i<5;i++){ sen = a[i]; sb = sen.getBytes(); pac = new DatagramPacket(sb, sb.length, InetAddress.getByName("127.0.0.1"), 2000); cli.send(pac); } cli.close();//关闭连接 } catch (SocketException se) { se.printStackTrace(); } catch (IOException ie) { ie.printStackTrace(); } } public static void main(String args[]) { new UdpHeartBeatClient(); } }
客户端向服务器(端口:2000)发送数据
2、服务器
import java.net.DatagramPacket; import java.net.DatagramSocket; public class HeartBeat{ private DatagramSocket ser; private DatagramPacket pac; private byte rb[]; private String rev; try { ser = new DatagramSocket(2000); rb = new byte[1024]; pac = new DatagramPacket(rb, rb.length); rev = ""; while(true){ ser.receive(pac);//监听,客户端是否有数据发送过来 //指定接收到数据的长度,可使接收数据正常显示,开始时很容易忽略这一点 rev = new String(rb, 0, pac.getLength()); System.out.println(rev ); } } catch (Exception e) { e.printStackTrace(); } }
接收从客户端发过来的数据。
相关文章推荐
- 【Echo】实验 -- 实现 C/C++下UDP, 服务器/客户端 通讯
- java使用UDP数据报通讯方式QQ聊天系统:服务器、客户端
- 一种减轻服务器负担并提高客户端间通讯效率的网络通讯设计[TCP/UDP合用] | 简单加密
- Linux系统udp模式下服务器与客户端通信(可同时多个客户端一起通讯)
- 电骡协议规范(三):客户端和服务器之间的UDP通讯
- VB.NET C#实现基于UDP的免服务器局域网多客户端点对点通讯
- python服务器和客户端网络通讯UDP
- 数据报(UDP)套接字客户端/服务器编程
- Esp8266学习之旅⑧ 你要找的8266作为UDP、TCP客户端或服务端的角色通讯,都在这了。(带Demo)
- Windows Socket 编程_单个服务器对多个客户端简单通讯
- 基于UDP协议的服务器/客户端程序
- Android客户端,服务器,如何进行socket通讯的?
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
- 【Echo】实验 -- 实现 C/C++下TCP, 服务器/客户端 通讯
- udp客户端和服务器代码,支持ipv6。
- 客户端与服务器之间分别通过TCP和UDP进行通信
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
- UNIX UDP回射服务器/客户端
- tcp通讯的方式并使用socket建立客户端与服务器的通信的过程
- eMule协议规范 第三章 客户端服务器的UDP交流