众所周知,要实现网络通信,要使得多台设备能够协同工作实现信息交互和资源共享就必须要遵守相互都能接受的规则,而这种规则便是我们所熟悉的通信协议。因此说到底网络通信的根本其实还是通信协议,而平时我们最常用的通信协议就是TCP/IP、NETBEUI和IPX/SPX三种协议。
我仔细翻看了一些资料后,算是对TCP/IP协议有了一些了解,TCP/IP协议就是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通信协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。而TCP/IP一般有下面几个层次
网络接口层:也称为数据链路层,它是 TCP/IP 的最底层。
互联网层:也称IP层,该层把分组封装到IP数据报中,填入数据报的首部,使用路由算法来选择数据报的传输途径。然后把数据报交给下面的网络接口层中的对应网络接口模块。
传输层:其功能是使源端主机和目标端主机上的对等实体可以进行会话。分为TCP和UDP协议。
应用层:将OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层面向不同的网络应用引入了不同的应用层协议。
当我们分别使用TCP与UDP来发送数据时,我们会发现,TCP会判断文件是否发送成功,如未发送成功,则重新发送数据包,虽然能够精确的传输你想要的数据包,却因此导致TCP数据包发送的效率低下而UDP则是更注重于效率方面,不管数据包是否被接收,UDP只负责发送数据,因此UDP的效率相比TCP无疑是高了很多。而我们所熟悉的QQ也是用UDP来传输服务器与客户机之间的数据。
下面是使用UDP的一个简单的java客户端的创建:
package pzw.xieyi; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketAddress; import javax.swing.JTextArea; public class NetClient extends Thread{ private String msg; private JTextArea jta = new JTextArea(); public NetClient(String msg,JTextArea jta){ this.msg = msg; this.jta = jta; } public void run(){ try{ //创建用来接收的本地地址对象 SocketAddress localaddr = new InetSocketAddress("192.168.43.172",420); //接收的服务器UDP端口 DatagramSocket recvSocket = new DatagramSocket(localaddr); while(true){ //指定接收缓冲区大小 byte[] buffer = new byte[20]; //创建接收数据包对象,指定接收大小 DatagramPacket packet = new DatagramPacket(buffer,buffer.length); recvSocket.receive(packet); //得到发送方的ip和端口 SocketAddress address = packet.getSocketAddress(); //转换接收到的数据为字符串 msg=new String(packet.getData()).trim(); jta.append(msg); System.out.println("收到数据:"+msg); } }catch(Exception ep){ ep.printStackTrace(); } } }
这便是我这段时间对TCP/IP协议的学习心得~~~
相关推荐
NULL 博文链接:https://coco-young.iteye.com/blog/1150719
初识鲁迅——少年闰土PPT.ppt
初识单片机—— 十字路口交通灯的.ppt
初识JavaScript ———(2)!!!.md
初识JavaScript———(1)!!!.md
01第1章 初识C++——C++程序设计入门,视频类资源。不过这里只有一本书的第一章
PLC技术及应用
PLC技术
PLC技术及应用
PLC技术
PLC技术及应用
跟我学JTAG协议破解——第一弹 初识J跟我学JTAG协议破解
初识Modbus TCP/IP-C#编写Modbus TCP客户端程序 配合相关博文 http://blog.csdn.net/thebestleo/article/details/52331976 学习
交流JTAG跟我学JTAG协议破解——第一弹初识JTAGTAP状态机.pdf
IOC-InversionofControl,译为控制反转,是一种遵循依赖倒置原则的代码设计思想。所谓依赖倒置,就是把原本的高层建筑依赖底层建筑“倒置”过来,变成底层建筑依赖高层建筑。高层建筑决定需要什么,底层去实现这样的...
初识PLC——PLC发展共41页.pdf.zip
初识PLC——PLC性能共28页.pdf.zip
初识PLC——PLC工作原理共9页.pdf.zip