`
wangrui
  • 浏览: 186622 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

网络编程之:UDP服务器

阅读更多
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

/**
 * UDP服务器
 * 
 */
public abstract class UDPServer implements Runnable {
	// *********常数*********

	private static final int MAX_BUFFER_SIZE = 8096;// 8k
	private static final int DEFAULT_PORT = 9090;

	// *********成员变量*********

	private int bufferSize;
	protected DatagramSocket socket;
	private Thread runner = null;
	private volatile boolean shouldStop = false;

	// *********构造函数*********

	/**
	 * 使用默认监听端口(9090)和默认的接收缓存大小(8096字节)构建一个UDPServer对象。
	 * 
	 */
	protected UDPServer() throws SocketException {
		this(DEFAULT_PORT, MAX_BUFFER_SIZE);
	}

	/**
	 * 
	 * 构建一个UDPServer对象。使用默认的接收缓存大小(8096字节)
	 * 
	 * @param port 服务监听端口
	 * @throws SocketException
	 */
	protected UDPServer(int port) throws SocketException {
		this(port, MAX_BUFFER_SIZE);
	}

	/**
	 * 
	 * 构建一个UDPServer对象。
	 * 
	 * @param port 服务监听端口
	 * @param bufferSize 接收缓存大小(单位字节)
	 * @throws SocketException 端口被占用或没有权限时抛出的例外
	 */
	protected UDPServer(int port, int bufferSize) throws SocketException {
		this.bufferSize = bufferSize;
		this.socket = new DatagramSocket(port);
	}

	// *********成员方法*********

	/**
	 * 开始UDP服务
	 */
	public synchronized void start() {
		if (runner == null) {
			runner = new Thread(this);
			runner.setDaemon(false);
			runner.start();
		}
	}

	/**
	 * 停止UDP服务
	 */
	public synchronized void stop() {
		if (socket != null) {
			shouldStop = true;
			runner.interrupt();
			runner = null;
			socket.close();
			socket = null;
		}
	}

	/**
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Runnable#run()
	 */
	public void run() {
		byte[] buffer = new byte[bufferSize];
		while (!shouldStop) {
			DatagramPacket input = new DatagramPacket(buffer, buffer.length);
			try {
				socket.receive(input);
				requestHandle(input);
			} catch (IOException ioe) {
				// igonre
			}
		}
	}

	/**
	 * 处理UDP请求
	 * 
	 * @param input UDP数据报
	 */
	public abstract void requestHandle(DatagramPacket input);

}



分享到:
评论
1 楼 wxclover 2008-07-16  
[b][/b][i][/i][u][/u]
引用

    [*]

    [*]
[img][/img][url][/url][align=right][/align]    

相关推荐

    Udp编程:服务器和客户端

    基于Visual C++6.0平台,使用C++语言编写而成,包括服务器和客户端

    socket 网络编程 TCP协议UDP协议传输

    socket 网络编程 TCP协议 UDP协议 服务器和客户端之间的传输

    C#编程socket编程之udp服务器端和客户端

    基于Udp协议是无连接模式通讯,占用资源少,响应速度快,延时低。至于可靠性,可通过应用层的控制来满足。(不可靠连接)使用Udp协议通讯需要具备以下几个条件:(1).建立一个套接字(Socket)(2).绑定服务器端IP地址及...

    基于Socket API编程接口实现的UDP服务器

    本程序基于Socket API编程接口实现的作为UDP服务器使用,网络调试助手作为客户端,发送“GET”可获取开发板系统时间 。固件程序为UDP服务器,默认IP为192.168.1.30。固件创建socket并使用8080作为服务器端口号,通过...

    linux 网络编程(UDP)

    实验验证linux网络编程中的UDP编程,其中UDP服务器从电脑1接收数据,然后转发到电脑2实现了简单的udp收发服务器的设计,其中lisntener为服务器程序,talker为电脑1程序,disp为电脑2程序

    socket网络(UDP协议编程)

    文件时简单的UDP服务器程序和UDP客户端程序的例子,这两个程序都是Win32应用程序,在本地机器上的8888端口进行通信

    Qt5网络编程之UDP协议---实例

    UDP(User Datagram Protocol即用户数据报协议)是一个轻量级的,不可靠的,面向数据报的无连接协议。在Qt中提供了QUdpSocket 类来进行UDP数据报(datagrams)的...这样也就构成了所谓的C/S(客户端/服务器)编程模型。

    linux C语言 网络编程教程及源码

    10、Linux网络编程10——TCP编程之服务器 11、Linux网络编程11——tcp、udp迭代服务器 12、Linux网络编程12——tcp三次握手、四次挥手 13、Linux网络编程13——connect()、listen()和accept()三者之间的关系 14、...

    linux网络编程UDP服务器和客户端代码

    内涵三个文件,客户端程序,服务器程序,和公共函数头文件,本人是在Ubuntu14.0.4环境下写的,欢迎下载

    MFC实现UDP网络编程

    包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和...

    基于TCP或UDP的客户端与服务器编程网络聊天-课程设计(含课程报告和代码).rar

    基于TCP或UDP的客户端与服务器编程网络聊天-课程设计(含课程报告和代码)

    UDP 客户端 服务端 网络编程

    UDP 客户端 服务端 网络编程 自己写的基于udp的本地网络编程

    UDP服务器的设计

    UDP是TCP/IP协议族为传输层设计的两个协议之一,是一种无连接的,不可靠的协议。...编写一UDP服务器程序,流畅地完成视频文件地传输,要能对多个客户端进行管理。需要通过UDP模拟多个客户端连接验证的情况

    UDP SOCKET 网络编程

    UDP协议的的网络程序。包含服务器(接收端)和客户端的(发送端)的源程序。C++语言编写。VC++6.0中测试通过

    c语言udp服务器端代码

    c语言udp服务器端代码,代码亲自测试能用。socket编程。

    UDP服务器客户端编程实战

    UDP多多线程编程,客户端和服务端均可发送和接收,同时支持并发,可以连接多个客户端

    Linux UDP 编程步骤

    Linux 下 UDP 网络编程的基本服务器模型步骤、循环服务器模型步骤和并发服务器模型步骤,包括代码和步骤注释

    TCPIP高效编程:改善网络程序的44个技巧 PDF中文版带书签-目录

    《TCP/IP高效编程:改善网络程序的44个技巧》是TCP/IP 领域历久弥新的经典著作,网络编程人员必备,对TCP/IP 网络编程中存在的各种问题进行了全面解析,旨在帮助读者深入透彻地理解TCP/IP 网络编程。本书组织方式比较...

    udp网络程序服务器端

    dp网络程序服务器端,linux下C编程

    C++网络程序设计实例详解TCPUDP客户服务器编程

    本书全面介绍了使用Visual C++开发各种网络程序的方法与技巧,内容涵盖TCP和UDP的客户/服务器编程、Internet和LAN上的远程PC控制、链路层的计算机扫描技术、路由跟踪技术、IP欺骗技术、密码截获及保护技术、网络封包...

Global site tag (gtag.js) - Google Analytics