package udp;
import java.net.*;
public class TestUDPClient
{
public static void main(String args[]) throws Exception
{
//定义码头ds
DatagramSocket ds = new DatagramSocket();
//13行到23行完成的功能是: 定义可以发送数据的集装箱dp
String n = "123"; //13行
// ByteArrayOutputStream baos = new ByteArrayOutputStream(); //注意ByteArrayOutputStream的所有构造函数都没有byte[] buf这样的形参,即定义ByteArrayOutputStream流对象时是不能指定byte数组的,因为这个连接到的byte数组是由ByteArrayOutputStream自动生成的 9行 API:"public ByteArrayOutputStream(): 创建一个新的 byte 数组输出流。缓冲区的容量最初是 32 字节,如有必要可增加其大小。 "
// //9行代码一旦执行完毕,意味着两点: 1、在内存中生成了一个大小为32个字节的byte数组 2、有一根叫做baos的管道已链接到了该byte数组中,并且可以通过这个管道向该数组中写入数据
// //虽然此时可以通过baos向baos所连接到的在内存中分配好的byte数组中写入数据,但是ByteArrayOutputStream流并没有提供可以直接把long类型数据直接写入ByteArrayOutputStream流所连接到的byte数组中的方法, 简单说我们没法通过baos向baos所连接到的byte数组中写入long类型的数据, 查API文档可以发现: ByteArrayOutputStream流中并没有类似writeLong()这样的方法,但是DataOutputStream流中却有writeLong() writeFloat()等方法
// DataOutputStream dos = new DataOutputStream(baos);
// dos.writeUTF(n); //把n变量所代表的10000L写入dos所依附的baos管道所连接到的内存中的大小为32字节的byte数组中
// byte[] buf = baos.toByteArray(); //DataOutputStream 流中并没有toByteArray()方法,但是ByteArrayOutputStream 流中却有toByteArray()方法, 所以不可以把baos 改为dos,否则编译时会出错! ByteArrayOutputStream流中toByteArray()方法的含义,摘自API“创建一个新分配的 byte 数组。其大小是此输出流的当前大小,并且缓冲区的有效内容已复制到该数组中”
DatagramPacket dp = new DatagramPacket(n.getBytes(),n.getBytes().length, new InetSocketAddress("127.0.0.1", 6666) ); //23行
//在码头上把集装箱中的数据发送给对方
ds.send(dp);
//关闭码头
ds.close();
}
}
package udp;
import java.net.*;
public class TestUDPServer
{
public static void main(String args[]) throws Exception
{
//定义码头
DatagramSocket ds = new DatagramSocket(6666); //5678表示该码头占用的是5678这个编号,因为一台计算机可以有多个码头接收多个数据,这些码头用不同的编号来表示,这些编号的专业术语就是端口号
//定义可以用来接受数据的集装箱
byte buf[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
try
{
while(true)
{
//在码头上用集装箱接受对方发送过来的数据
ds.receive(dp); //注意:本语句执行完毕就意味着,dp数据包中就已经含有了从客户端接收过来的数据
//从集装箱中取出对方发送过来的数据
String str=new String(dp.getData(),0,dp.getLength());
// ByteArrayInputStream bais = new ByteArrayInputStream(dp.getData()); //1、 ByteArrayInputStream的内核必须是个字节数组,并且是从该字节数组中读取数据 2、dp.getData()表示把dp集装箱中的数据转化为一个字节数组并返回该字节数组
// BufferedReader dis = new BufferedReader(new InputStreamReader(bais));
System.out.println(str);
}
}
catch (Exception e)
{
e.printStackTrace();
ds.close(); //关闭码头
}
}
}
/*
在JDK 1.6中的运行结果是:
----------------------------------
10000
数据源自: 127.0.0.1 : 1464
10000
数据源自: 127.0.0.1 : 1471
10000
数据源自: 127.0.0.1 : 1474
----------------------------------
*/
分享到:
相关推荐
基于UDP协议的文件传输系统是一个大一下学期实训项目,旨在让学生通过C语言实现一个基于UDP协议的文件传输功能,同时提高他们的编程能力和逻辑思维。这个项目不仅关注技术实现,也强调了项目设计和文档编写的实践。 ...
《基于UDP协议文件传输系统》项目要求书详细阐述了如何使用C语言实现一个基于UDP协议的文件传输系统,旨在提升学员的编程技能和逻辑思维能力,同时也涉及到了网络编程的基本原理。以下是该项目的关键知识点和设计...
### 一个基于UDP协议的文件传输应用程序的实现 #### 概述 随着信息技术的快速发展,企业内部对于文件传输的需求越来越倾向于高效、便捷且环保的方式。传统的纸质文件传递方式已逐渐被淘汰,取而代之的是利用现代...
【基于UDP的文件传输工程(C++)】是一个利用UDP(User Datagram Protocol)协议进行文件传输的项目。UDP是互联网协议栈中的一种无连接、不可靠的传输协议,相较于TCP,它具有更低的延迟和更高的传输效率,适用于对...
UDP协议下的文件传输系统的一个小小的介绍
### 基于UDP协议的多文件传输技术详解 #### 一、引言 随着互联网技术的迅猛发展,网络已经成为现代社会不可或缺的一部分。在各种网络应用中,文件传输是最基础也是最重要的功能之一。目前,文件传输主要依赖两种...
### 网络程序设计-基于UDP的文件传输 #### 概述 本文将详细介绍一个基于用户数据报协议(User Datagram Protocol, UDP)实现的文件传输程序的设计与实现原理。该程序由两个部分组成:客户端和服务端。客户端负责...
本项目是关于基于UDP实现的简单文件传输,尽管可能在传输的完整性和可靠性上有所欠缺,但作为学习和理解UDP协议的基础实践,具有一定的价值。 首先,我们需要了解UDP的基本原理。UDP不建立连接,而是直接将数据报文...
标题"基于UDP大文件传输.rar"所指的,就是通过UDP协议来实现大文件的高效传输。大文件传输通常面临的问题包括数据包的丢失、乱序以及网络拥塞等问题。在使用UDP进行大文件传输时,我们需要解决这些挑战,确保文件...
基于udp文件传输协议,实现udp大文件传输,且稳定
【标题】:“基于UDP协议的局域网聊天工具”指的是一个设计用于在局域网内实现用户间通信的应用程序,该应用是通过用户数据报协议(UDP)来传输数据的。UDP是一种无连接的、不可靠的传输层协议,与TCP(传输控制协议...
本资源是基于 UDP 协议与 OpenCV 库实现网络视频传输的实现代码,使用 Python 语言实现,分为服务器端和客户端两个文件,启动前需要修改 host IP 地址为实际的 IP 地址,同时需注意先运行服务器端代码,再运行客户端...
《基于UDP协议的文件传输系统》项目要求书详述了一个以C语言实现的UDP文件传输系统,旨在训练学生的编程能力和逻辑思维,同时也涉及到项目管理和设计文档的撰写。以下是该项目涉及的关键知识点: 1. **UDP协议**:...
### 基于UDP协议的视频图像传输的研究与实现 #### 概述 随着信息技术的飞速发展,多媒体通信技术成为计算机科学领域的研究热点之一。其中,数字视频传输作为多媒体通信的重要组成部分,面临着数据量巨大与网络带宽...
在IT领域,网络通信是至关重要的组成部分,而文件传输则是其中的一个基本操作。在这个场景中,我们关注的是基于用户数据报...理解UDP协议的工作原理和文件传输的基本流程,对于实现高效且可靠的文件传输系统至关重要。
本主题将深入探讨一种常见的网络通信协议——用户数据报协议(UDP),以及如何使用C#编程语言来实现基于UDP协议的简单客户端与服务器。 **UDP协议简介** UDP是一种无连接的传输层协议,它不像TCP那样建立连接后再...
本项目“基于TCP/UDP的文件传输”着重探讨了如何利用这两种协议进行文件的可靠传输,特别是在实现UDP的可靠性方面。 TCP是一种面向连接的协议,它提供了可靠的、基于字节流的数据传输服务。TCP通过三次握手建立连接...
总结来说,基于UDP的文件传输DEMO展示了C#如何利用`UdpClient`类进行文件的分块、封装、发送和接收,同时也体现了在不可靠的UDP协议上实现可靠传输的一些关键技术。通过实践这个DEMO,开发者可以掌握网络编程的基本...