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

JAVA 网络编程之UDP(用户数据包协议)

 
阅读更多

 

/**服务器**/

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;



public class ChatterServer {

	public static final int INPORT = 1711;//服务器端口
	private byte[] buf = new byte[1000];
	private DatagramPacket packet = new DatagramPacket(buf, buf.length);//创建数据包
	private DatagramSocket socket;//UDP套接字
	public ChatterServer(){
		try{
			socket = new DatagramSocket(INPORT);//启动套接字
			System.out.println("Server started");
			while(true){
				socket.receive(packet);//接收数据包并将当前线程挂起
				String rcvd = Datagram.toString(packet) + ", from adddress:" + packet.getAddress() + ",port:" + packet.getPort();//解析数据包
				System.err.println(rcvd);//打印数据信息
				String echoString = "Echoed:" + rcvd;
				DatagramPacket echo = Datagram.toDatagram(echoString, packet.getAddress(), packet.getPort());//将接收到包重新包装称UDP数据包准备原封不动的返回给客户端
				socket.send(echo);//反馈数据包
			}
		}catch (SocketException e) {
			System.out.println("Can`t open socket");
			System.exit(1);
		}catch (IOException e) {
			System.out.println("Communication error");
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		new ChatterServer();//运行服务器
	}
}

/**客户端**/

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;


public class ChatterClient extends Thread {

	private DatagramSocket socket;
	private InetAddress address;
	private byte[] buf = new byte[1000];
	private DatagramPacket packet = new DatagramPacket(buf, buf.length);//创建要发送的数据包
	private int id;//客户端id

	public ChatterClient(int id) {
		this.id = id;
		try {
			socket = new DatagramSocket();//创建UDP套接字
			address = InetAddress.getByName(null);//取得本地地址
		} catch (SocketException e) {
			System.out.println("can not open socket");
			e.printStackTrace();
			System.exit(1);
		} catch (UnknownHostException e) {
			System.out.println("Can not find host");
			System.exit(1);
		}
		System.out.println("ChatterClient starting");
		start();//之后调用run()
	}
	
	public void run(){
		try {
			for(int i = 0 ; i < 25 ; i++){
				String outMsg = "Client #" + id + ",message #" + i;//要发送到服务器的数据
				socket.send(Datagram.toDatagram(outMsg, address, ChatterServer.INPORT));//打包数据并将其发送到指定地址+端口的服务端
				socket.receive(packet);//接收服务端返回的数据包
				String rcvd = "Client #" + id +", rcvd from " + packet.getAddress() + "," + packet.getPort() + ":" + Datagram.toString(packet);//整合返回信息
				System.out.println(rcvd);//输出到控制台
			}
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(1);//出错退出
		}
	}
	
	public static void main(String[] args) {
		for(int i = 0 ; i < 10 ; i ++ ){
			new ChatterClient(i);
		}
	}
}

0
0
分享到:
评论

相关推荐

    java使用udp协议和硬件进行数据收发处理

    java使用udp协议进行数据收发处理,java使用udp协议进行数据收发处理

    Java中实现UDP协议编程的方法

    什么是UDP协议 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,...

    Java网络编程之UDP协议数据传输

    这里采用UDP协议,那么必须有一个UDP协议的Socket DatagramSocket(); 创建一个发送端UDP协议Socket对象 DatagramSocket(int port); 创建一个接收端UDP协议的Socket对象,这里需要【监听】指定端口 发送端数据包的...

    第13章-Java网络编程-Java面向对象程序设计教程-微课视频版-程杰-清华大学出版社.pptx

    13.1 TCP/IP协议简介 13.2 网络开发中的常用工具类 13.3 面向连接的TCP通信 13.4 无连接的UDP通信 13.5 UDP广播通信 13.6 局域网通信工具 第13章 Java网络编程 第13章-Java网络编程-Java面向对象程序设计教程-微课...

    基于UDP协议的数据包收发程序

    使用java的DatagramSocket和DatagramPacket类进行编程,编写了图形化界面

    java pptJava 中的网络编程

    java课程ppt,第11章 Java 中的网络编程, 1. URL类 2. 读取URL中的资源 3. 显示URL资源中的HTML文件 4. 处理超链接 5. InetAddress类 6. 套接字Socket 7. 使用多线程处理套接字连接 8. UDP数据报 9. 广播数据包

    Java基础[07-网络编程].ppt

    网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 java.net 包中 J2SE 的 API 包含...UDP:UDP 是用户数据报协议的缩写,一个无连接的协议。提供了应用程序之间要发送的数据的数据包。

    java udp编程

    运用java udp实现数据包通讯,多线程实现服务器端与多个客户端互相通讯。

    基于Java的视频会议系统(软件程序+WORD论文文档).zip

    那么选择UDP协议,即用户数据报协议(User Datagram Protocol,UDP),就成为一种必然。 Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的...

    Java 多人聊天室

    Java 网络编程 多人聊天室 Socket通信 多线程 课程设计,基于UDP通信,用户数据包,用户在主界面进行人员管理,可添加聊天人员,保证干货----明亮出品

    Java 网络编程

    Java 网络编程 网络编程是指编写运行在多个设备...UDP:UDP 是用户数据报协议的缩写,一个无连接的协议。提供了应用程序之间要发送的数据的数据包。 本教程主要讲解以下两个主题。 Socket 编程:这是使用最广泛

    基于UDP协议的Socket编程

    DatagramPacket类包含具体的要传输的信息,这些信息被封装在称为数据包报(Datagram)的UDP包中。DatagramSocket类用于收发UDP数据报。为发送数据,要将数据封装到DatagramPacket中,使用DatagramSocket发送该包。为...

    Java NIO实例UDP发送接收数据代码分享

    主要介绍了Java NIO实例UDP发送接收数据代码分享,分享了客户端和服务端完整代码,小编觉得还是挺不错的,共需要的朋友参考。

    Java网络编程之查找Internet地址

    一、概述  连接到Internet上...  IP地址是IP使用的32为或128位无符号数字,它是一种低级协议,UDP和TCP协议都是在它的基础上构建的。  1、地址类型  单播:单个接口的标识符,发送到单播地址的数据包被交付

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    1udp.rar_网络编程_Java_

    基于UDP协议的网络通信程序,向服务器端发送100个数据包

    java自学之道

    1.3 UDP用户数据包协议 2、URL连接 2.1 URL 2.2 Java.net包中URL类定义 2.3 创建URL对象 2.4 Java.net包中URLConnection类 2.5 AppletContext接口类 2.6 获取网络属性信息 2.7 创建输入流(InputStream)对象 3、...

    java网络编程下

    发送端 import java.io.IOException;... 准备对应数据包,需要带有指定数据 3. 发送数据 send 4. 关闭UDP发送端 */ public class SenderDemo1 { public static void main(String[] args) throws IOException { S

    UDP+阻塞队列+多线程

    练习 Java 多线程编程技术。 练习实现网络并发服务的编程技术。 学习如何实现多线程间的相互同步和相互协作。 理解什么是线程安全。 二. 设计要求 功能概述:实现一个支持并发服务的网络运算服务器程序。该服务器...

Global site tag (gtag.js) - Google Analytics