`
JavaSam
  • 浏览: 952131 次
  • 性别: 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(User Datagram Protocol)协议是一种无连接、不可靠的传输协议,与TCP相比,它更注重速度和效率。在这个项目中,我们利用Java的Socket编程接口实现了基于UDP的通信。以下是对相关知识点的详细...

    java网络编程,UDP,发送16进制报文。

    本教程主要关注使用Java标准版(J2SE)进行UDP(用户数据报协议)通信,特别是如何发送16进制格式的报文。UDP是一种无连接的、不可靠的传输协议,适合对实时性要求高的场景,例如视频流和在线游戏。 首先,让我们...

    使用Java控制UDP协议.rar_使用UDP协议_数据包

    标题“使用Java控制UDP协议.rar_使用UDP协议_数据包”指出,这个压缩包包含了关于如何在Java编程环境中控制并利用UDP(User Datagram Protocol)协议进行数据包传输的知识。UDP是一种无连接的、不可靠的传输层协议,...

    Java Socket编程实现UDP网络测试

    Java Socket编程实现UDP网络测试是计算机网络领域中的一个重要实践,主要涉及到Java编程语言以及网络通信协议UDP(User Datagram Protocol)。Socket在计算机网络中扮演着桥梁的角色,它允许应用程序通过网络发送和...

    Java网络编程UDP

    Java网络编程中的UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议,它相比TCP(Transmission Control Protocol)在速度上更快,因为不需要建立和维护连接,也不保证数据包的顺序和可靠性。UDP适用于...

    java网络编程使用tcp、udp实现多用户对话

    总之,Java网络编程使用TCP和UDP实现多用户对话,涉及到客户端与服务器的连接建立、数据传输、异常处理、多线程或异步编程、以及安全性等多个方面。通过学习和实践,可以掌握这些关键技术,为开发高效、稳定的网络...

    JAVA udp 协议编程

    Java UDP协议编程主要涉及到网络通信中的无连接服务,它的特点是快速、简单,但不保证数据的可靠传输。UDP(User Datagram Protocol)在OSI模型的传输层中运作,与TCP协议相比,它不进行数据包的分组、组装和排序,...

    JAVA进行UDP编程

    UDP(User Datagram Protocol)是传输层的一个无连接协议,它提供了简单、快速的数据传输服务,但不保证数据的可靠传输。在Java中,我们可以使用java.net包中的DatagramSocket类和DatagramPacket类来实现UDP通信。...

    期末课设-基于Java抓取UDP数据包(jpcap资源需自行安装)

    在这个"期末课设-基于Java抓取UDP数据包"项目中,学生可能还需要了解网络协议的基本原理,包括IP协议、UDP协议的结构,以及如何解析和理解这些协议的头部信息。此外,学习使用`jpcap`库的API文档和调试技巧也是项目...

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

    Java网络编程中,UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议,它在TCP/IP协议栈中位于传输层。与TCP相比,UDP更轻量级,速度快,适合于对实时性要求较高的应用,如视频通话、在线游戏等。本篇...

    编程实现基于UDP的PING (Java)

    下面将详细解释基于UDP的PING实现以及相关的Java编程知识。 首先,UDP是传输层的一种无连接协议,它不提供诸如确认、流量控制或重传等服务,因此相对于TCP,UDP更适合于对实时性要求高但可以容忍数据丢失的应用场景...

    Java网络编程

    Socket是TCP/IP协议族的应用层接口之一,通过Socket,开发者可以利用TCP/IP协议栈提供的功能进行网络编程。Socket可以基于TCP协议或者UDP协议进行通信,从而实现可靠或不可靠的数据传输。 7. **URL与Socket的关系*...

    Java网络编程-第三版(中文版).pdf(Elliotte Rusty Harold)

    《Java网络编程》第三版是由Elliotte Rusty Harold编著的一本专业书籍,中文版为国内Java开发者提供了深入理解网络编程的宝贵资源。这本书详细介绍了如何使用Java语言进行网络应用开发,涵盖了从基础概念到高级技术...

    基于UDP协议的数据包收发程序(代码+报告)Java

    在本文中,我们将深入探讨如何使用Java编程语言实现基于UDP(User Datagram Protocol)协议的数据包收发程序。UDP是一种无连接的传输层协议,适用于实时应用,如视频流和在线游戏,因为它提供低延迟和简单高效的特性...

    java网络编程源码

    Java网络编程是Java开发中的重要领域,它涵盖了网络通信的所有基本概念和技术,包括TCP/IP协议栈、套接字(Socket)编程、多线程、数据传输格式等。孙卫琴的《java网络编程》一书深入浅出地讲解了这些核心概念,并...

    big_end.zip_Big!_java Tcp _java udp_java网络编程

    _java Tcp _java udp_java网络编程"聚焦于使用Java语言实现TCP和UDP这两种主要的网络通信协议,旨在创建一个聊天通讯工具,允许用户通过这两种方式进行交互。 TCP(Transmission Control Protocol)是一种面向连接...

    Java中的UDP协议编程

    【Java中的UDP协议编程】 UDP(User Datagram Protocol)是一种无连接的、不可靠的传输层协议,它在OSI模型的第四层传输层工作,直接位于IP协议之上。与TCP协议相比,UDP不保证数据包的顺序、完整性和可靠性,但它...

    java网络编程实现udp数据发送与接收的简单实例.zip

    Java网络编程是开发分布式应用程序的关键部分,而UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议,常用于需要高效传输且不关心数据丢失的场景。本实例将介绍如何使用Java实现UDP数据的发送与接收。...

    java抓取数据包及网络基础

    总之,Java抓取数据包及网络基础是一个涵盖广泛的主题,涵盖了网络原理、Java编程、数据包抓取和分析等多个方面。深入学习这个主题,不仅可以提升你的编程能力,还能帮助你更好地理解和解决网络相关的问题。

    java聊天工具 基于UDP编程

    Java聊天工具基于UDP编程是一种常见的网络通信应用,UDP(User Datagram Protocol)是传输层协议,与TCP(Transmission Control Protocol)相比,它提供了无连接、不可靠的服务,但具有更高的速度和更低的开销。...

Global site tag (gtag.js) - Google Analytics