`
东之雪
  • 浏览: 1348 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

通信协议的概念与传送文件的举例

阅读更多
[color=blue]
通信协议概念——文件传送;
   我们的客户端在与服务器端在交流的过程中就拿QQ来举例吧~可以聊天~可以互相传送各种文件~我们还要添加或删除好友~注册什么什么~获取好友列表~进入空间等等一大堆的事情~可是我们的输入流和输出流总是一大堆的字节~我们要准确的来设置和处理我们要发布的和接收的信息我们就必须事先准备好和服务器之间的协议~
拿发送消息和发送文件来说吧~
我们可以事先给消息一个标记位~比如消息是0x0,文件的是0x1;这样我们在接受的 时候可以通过先读取标记位就可以明白是消息还是文件了~紧接着我们可以继续定义其他的一些事情~
如果是消息~我们得把这个消息的字符长度告诉对方~紧接着就是消息内容~如果是文件我们得知道文件名和文件内容~所以我们可以定义文件名长度,文件名,文件长度,文件内容~这样按照一定的顺序和组织发出去的字节流我们就可以按照这个规则来读取~就更明了了~当然啦~这个只是举个例子~我们还可以分的再细一些~比如发送的时间~是发给谁的~怎么怎么样都行~~
下面的代码就是按照这个协议写的内容了举例了~


先建立一个客户端~我们先在客户端来按照这个协议来发送信息[/color]Socket socket = new Socket(string, port);
FileInputStream fis=new FileInputStream(filename);
int length=fis.available();///返回该文件下的字符总长度
byte[] bytes=new byte[length];
int  readLen = fis.read(bytes);///一次性全部读完~~于是这个字节数组就有东西了
System.out.println("readLen="+readLen);
// String s=new String(bytes);//转成字符串再输出~~
// System.out.println(s);

fis.close();//文件操作结束后应该关闭掉它~~

OutputStream out=socket.getOutputStream();
DataOutputStream dos=new DataOutputStream(out);
int size=filename.getBytes().length;//文件名的长度
dos.writeInt(size);
System.out.println("文件名长度"+size);
dos.writeInt(length);///文件的长度
System.out.println("文件长度"+length);
dos.write(filename.getBytes());

dos.write(bytes);
dos.flush();
dos.close();

再在服务器端按照这个协议解析这个信息~~
S是服务器端得到的Socket对象

InputStream input = s.getInputStream();
output = s.getOutputStream();
DataInputStream dis=new DataInputStream(input);
int size=dis.readInt();///文件名长度
System.out.println("文件名长度"+size);
int size1=dis.readInt();//文件长度
System.out.println("文件长度"+size1);
byte[] bytes=new byte[size];
dis.readFully(bytes);

String filename=new String(bytes);
System.out.println("文件名是:"+filename);

byte[] b=new byte[size1];
dis.readFully(b);
最后生成一个文件保存起来~~并关闭所有的流~~~
File f=new File("E:/AXWWWWWWWAXA.exe");
f.createNewFile();
FileOutputStream fos=new FileOutputStream(f.getAbsolutePath(),true);
fos.write(b);
fos.flush();
dis.close();
fos.close();
总结:
俗话说无规矩不成方圆~我们只要事先制定好了规矩~就不怕一大堆的信息交汇了~我们就可以大胆的去写通信类的产品了~而且在数据库的设计和增删改查过程中也简便多~也有所启发~是不是有种豁然开朗的感觉哈?~
分享到:
评论

相关推荐

    Visual C++实践与提高——串口通信与工程应用篇1

    2.5.9 实际传输文件截图 45 2.6 程序发布问题 45 2.7 小结 45 第3章 使用WinAPI串口编程 47 3.1 API串口编程概述 47 3.2 采用同步查询方式的编程方法 47 3.2.1 创建串口 48 3.2.2 关闭串口 53 3.2.3 发送数据 53 ...

    网络协议含义详细说明

    1. **应用层协议**:直接面向用户提供服务,常见的有FTP(文件传输协议)、Telnet(远程登录协议)、SMTP(简单邮件传输协议)、HTTP(超文本传输协议)等。 2. **传输层协议**:负责端到端的数据传输,常见的有TCP...

    数据通信原理与技术

    51.1通信协议的一般概念……. 5.1.2通信协议的分层…………. 5.2物理层协议…………………. 5.2.1 基本概念…………………. 5.2.2 CCrR v.N/搬232c建议 ‘ 5.2.3 v 35建议………………. ...

    C++binder通信实例

    - `IService.aidl`: AIDL接口定义文件,描述了客户端和服务端之间的通信协议。 - `MyService.cpp`: 服务端代码,包含了Binder实现类和服务的生命周期管理。 - `MyBinder.cpp`: Binder实现类的源代码,处理客户端的...

    LIN2.1规范

    **LIN**(Local Interconnect Network)是一种基于**UART/SCI**(Universal Asynchronous Receiver-Transmitter / Serial Communication Interface,通用异步收发器/串行通信接口)的低成本串行通信协议。LIN最初由...

    DL476_92协议

    - **特点**:不能直接与低层协议交互,需与其他数据块一起构成APDU后才能进行通信。 - **应用**:在实际通信过程中,通常将多个数据块组合成一个APDU进行传输。 ##### 2.3 联系(联接) - **定义**:指两个用户进程...

    基于TCPIP协议的SocketJAVA编程.doc

    - **TCP/IP协议**:传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol, TCP/IP)是一种网络通信协议,其核心是定义了互联网中数据传输的规则与格式。TCP/IP协议确保了网络上所有通信设备之间...

    联通SGIP短信发送程序举例(java)

    1. **SGIP协议**:SGIP(Short Message Gateway Interface Protocol)是中国联通制定的一种短信网关接口协议,用于短信中心(SMSC)与业务平台之间的通信。它定义了数据传输格式、消息类型、命令响应等,使得业务...

    欧母龙PLC例程源码WoodwoodControlerExampleProtocolProgram

    通过研究这段源码,我们能够学习到如何配置PLC的相关参数,设置正确的通信协议,以及如何编写程序以确保数据能够准确无误地传输。 ### 总结 通过对“欧母龙PLC例程源码Woodwood Controler Example Protocol ...

    欧姆龙协议宏操作手册中文版

    - **灵活性:** 支持自定义通信协议,可以根据具体的应用需求进行定制化开发。 - **兼容性:** 与多种PLC型号兼容,确保了广泛的适用性。 **1.3 支持的PLC型号和个人计算机** - **PLC型号:** 包括C200HX/HG/HE、CS...

    一个很实用的点对点通信实例

    点对点(P2P,Peer-to-Peer)通信是一种网络通信模式,其中每个参与者,即“节点”,既是客户端又是服务器,可以直接与其他节点交换数据,而无需通过中心服务器。这种技术在分布式系统、文件共享、实时通信等领域...

    计算机通信网答案(顾尚杰,薛质版)

    ### 计算机通信网知识点解析 #### 一、计算机通信基本概念 ...以上内容覆盖了计算机通信网中的基本概念、网络架构、协议体系、差错控制等多个方面,旨在帮助读者深入理解计算机通信网络的相关知识点。

    TCP、UDP 通信程序设计实验报告

    在深入探讨TCP与UDP通信程序设计实验报告之前,我们首先要了解TCP(传输控制协议)和UDP(用户数据报协议)之间的区别和联系。TCP是一种面向连接的协议,它提供可靠的数据传输服务,保证数据包按顺序到达,并且能够...

    电信设备-包含两个插件并且没有信元损失的数据传输装置.zip

    2. **信元传输机制**:详细解释信元的概念,以及为何避免信元损失对于通信质量至关重要。可能涉及信元的封装、解封装过程,以及如何在传输过程中保持其完整性的技术。 3. **数据编码与错误控制**:介绍用于防止数据...

    WCF应用实例。供自己学习用

    WCF集成了多种通信协议,如HTTP、TCP、SMTP等,为开发者提供了丰富的功能,包括安全性、事务处理、可靠消息传递等。本压缩包包含了一系列WCF的应用实例,旨在帮助开发者在实际开发过程中快速理解和应用WCF的基础知识...

    多媒体技术及应用 — 课程学习

     16.6 实时传输协议和实时控制协议  16.7 资源保留协议  练习与思考题  参考文献和站点 第17章 多媒体通信系统技术  17.1多媒体通信系统概要  17.2 H.323电视会议  17.3 H.324可视电话  17.4 IP电话  ...

    Z-Stack2006应用举例

    这些方法是应用程序与协议栈交互的基础。 **1.2.6 Mandatory Events** 除了必须的方法外,还有一些事件处理也是必不可少的,比如设备加入网络的事件、接收到数据包的事件等。这些事件的处理对于应用程序的正常运行...

    java自学之道

    1.2 TCP传输控制协议 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 创建输入流...

    UNIX操作系统教程 张红光

    第1章绪论.1 1.1操作系统概述1 1.1.1建立操作系统的目标1 1.1.2操作系统是用户与计算机的接口1 1.1.3操作系统是资源管理器2 1.2UNIX系统的主要特性3 1.3UNIX系统的发展史4 1.4开源软件与UNIX的推广发展6 1.4.1开源...

Global site tag (gtag.js) - Google Analytics