`
苡爱
  • 浏览: 7237 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

tcip udp协议的分析

阅读更多
TCP/IP是Transmission Control Protocol/Internet Protocol的简写由网络层的IP协议和传输层的TCP协议组成。为了使连入Internet的众多主机在通信时能够相互识别,Internet上的每一台主机和路由器都分配有一个唯一的32位地址。一个IP地址有4个字节组成,字节之间用句号分隔,每个字节表示为从 0 ~ 255 的十进制数。TCP/IP一般有下面几个层次
网络接口层:也称为数据链路层,它是 TCP/IP 的最底层。
互联网层:也称IP层,该层把分组封装到IP数据报中,填入数据报的首部,使用路由算法来选择数据报的传输途径。然后把数据报交给下面的网络接口层中的对应网络接口模块。
传输层:其功能是使源端主机和目标端主机上的对等实体可以进行会话。分为TCP和UDP协议。
应用层:将OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层面向不同的网络应用引入了不同的应用层协议。


一个简单地TCP/IP服务端代码:
ServerSocket server = new ServerSocket(port);
然后再获取输入输出流一个极其简单地基于TCP/IP的服务器端就这么产生啦,
OutputStream out = client.getOutputStream();
InputStream ins = client.getInputStream();

而一个客服端代码也可以简简单单的,当然你也可以直接用命令telnet 直接进行连接
TCP/IP所建立的连接时双向的,也就是说双方必须都保持连接,通信才能正常的进行,
在数据包进行传输的时候发现错误的包可以直接返回给服务器端,要求重新发送;

而基于UDP协议的通信就没这么麻烦,他是指负责对某一个端口进行传送数据,不会管你收不收的到,在不在线,他的任务就是负责发送数据

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
public class DatagramSender {
public static void main(String args[]) throws Exception {
//1.创建要用来发送的本地地址对象
SocketAddress localAddr = new InetSocketAddress("192.168.1.147", 
13000);
//2.创建发送的Socket对象
DatagramSocket dSender = new DatagramSocket(localAddr);
int count=0;
while(true){
//  创建要发送的数据,字节数组
count++;
//3.要发送的数据
byte buffer[] = (count+"-hello").getBytes();
//4.发送数据的目标地址和端口
SocketAddress destAdd = new InetSocketAddress("192.168.1.149", 14000);
//5.创建要发送的数据包,指定内容,指定目标地址
DatagramPacket dp = new DatagramPacket(buffer, buffer.length, destAdd);
dSender.send(dp);//6.发送
System.out.println("数据已发送: "+count);
Thread.sleep(1000);
}
}
}


import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
public class DatagramReciver {
public static void main(String args[]) throws Exception {
//1.创建要用来发送的本地地址对象
SocketAddress localAddr = new InetSocketAddress("192.168.1.149", 
14000);
//2.接收的服务器UDP端口
DatagramSocket recvSocket = new DatagramSocket(localAddr);
while(true){
//3.指定接收缓冲区大小
byte[] buffer = new byte[20];
//4.创建接收数据包对象,指定接收大小
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
//5.阻塞等待数据到来,如果收到数据,存入packet中的缓冲区中
System.out.println("UDP服务器等待接收数
据:"+recvSocket.getLocalSocketAddress());
recvSocket.receive(packet);
//得到发送方的IP和端口
SocketAddress address = packet.getSocketAddress();
//转换接收到的数据为字符串
String msg=new String(packet.getData()).trim();
//接收到后,打印出收到的数据长度
System.out.println("recv is:"+msg+" from:"+address);
}
}
}














  最后附上两个大神对qq通信协议的分析,反正我是被搞晕了  
0
0
分享到:
评论

相关推荐

    TCIP协议详解

    2. **传输层**:这一层的主要协议是TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供面向连接的服务,确保数据的可靠传输,包括错误检测、顺序传输和流量控制。而UDP则是一种无连接的协议,适用于对实时性要求...

    TCIP-IP详解

    它详细讲解了网络接口层(如以太网、令牌环)、互联网层(IP协议、ICMP、ARP/RARP)和传输层(TCP、UDP)的原理和工作方式。书中不仅解析了各个协议的功能和格式,还探讨了它们在网络通信中的作用,帮助读者理解数据...

    tcpip协议知识点与练习题.pdf

    在传输层中,tcp报文是靠tcp协议传输的,udp报文是靠udp协议传输的。tcp报文的特点是可靠的传输,而udp报文的特点是不保证传输的可靠性。tcp报文的头部长度是20个字节,最大长度是60个字节。tcp报文的报头也常称为...

    KUKA机器人TCIP/IP通讯

    库卡(KUKA)机器人TCP/IP通讯是工业自动化领域中的一个重要知识点,它涉及了现代机器人控制技术、网络通信协议以及编程接口等多个方面。在这个专题中,我们将深入探讨如何利用TCP/IP协议与KUKA机器人进行高效、稳定...

    TCP IP详解卷1:协议(原书第2版)

    本书主要讲述TCP/IP协议,展示每种协议的实际工作原理的同时还解释了其来龙去脉,新增了RPC、访问控制、身份认证、隐私保护、NFS、SMB/CIFS、DHCP、NAT、防火墙、电子邮件、Web、Web服务、无线、无线安全等内容,每...

    iniche_inichestacktcp_iniche_https://iniche.cn_

    该协议栈支持多种网络协议,包括TCP、UDP、HTTP、HTTPS等,使得嵌入式设备能够无缝接入互联网。 1. **TCP(传输控制协议)**:TCP是面向连接的协议,提供可靠的数据传输服务。它通过三次握手建立连接,并且通过确认...

    TCP/IP 指南(卷1+卷2)

    The TCP/IP Guide是TCP/IP领域的一部百科全书式的经典著作,书中对TCIP/IP协议的原理和实现做了全面的介绍,涉及因特网中使用的各种最新的协议和技术。

    用TCP/IP服务器客户端通讯源代码(基于VC++)

    在本文中,我们将深入探讨如何使用TCP/IP协议在服务器与客户端之间进行通信,特别是基于Microsoft Visual C++(VC++)的实现。TCP/IP是互联网上最广泛使用的通信协议,为应用程序提供可靠的数据传输服务。 首先,...

    苹果风格图标包ticp包分享

    魔方苹果风格图标包ticp包分享,henhaokan

    经典书籍用TCPIP进行网络互联

    用TCPIP进行网络互联 Douglas E.Comer经典书籍

    TCP服务端代码

    TCP服务端代码,测试可用,在创建对象的时候输入本机IP和需要监听的端口即可,然后对接收部分封装成事件,注册事件即可

    modbus poll 9.4.0.7z

    modbus poll V9.4.0最新版,有32位和64位。 带 SN。 调试485、tcip/ip上的modbus协议用工具。 亲测可用,支持win10,上传备用。

    贝岭的matlab的代码-epfl-net-ipv6Test:网站IPv6可访问性验证器

    贝岭的matlab的代码EPFL-Net-ipv6Test 网站 IPv6 可访问性验证器。 安装 通过 CPAN 与: cpan install EPFL::Net::ipv6Test 用法 命令行 epfl-net-ipv6-test --help Usage: epfl-net-ipv6-test ...s

    水晶风格系统图标下载

    【标题】:“水晶风格系统图标下载”所涉及的知识点主要集中在图标设计和用户界面(UI)设计领域。水晶风格,作为一种视觉艺术风格,曾流行于早期的计算机操作系统中,以其独特的透明效果和立体感赢得了用户的喜爱。...

Global site tag (gtag.js) - Google Analytics