------- android培训、java培训、期待与您交流! ----------
网络模型
OSI(Open System Interconnection开放系统互连)参考模型
TCP/IP参考模型
网络通信要素:
1.IP地址 InetAddress//获取本机
InetAddress id = InetAddress.getLocalHost();
System.out.println(id.toString());
//获取主机名
System.out.println(id.getHostName());
//获取IP
System.out.println(id.getHostAddress());
//获取百度 所有 主机的 IP地址
InetAddress [] id = InetAddress.getAllByName("www.baidu.com");
for(InetAddress i : id)
{
System.out.println(i.getHostName());
System.out.println(i.getHostAddress());
}
2.端口号
3.传输协议 TCP 和 UDP
TCP和UDP的区别:
TCP传输控制协议:
提供的是面向链接、可靠的字节流服务。当客户和服务器彼此交换数据之前,必须现在双方之间建立一个TCP链接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP是用户数据协议,是一个简单的面向数据报的运输层协议。
UDP:不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。用于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
UDP与TCP的主要区别:
在于UDP不一定提供可靠的数据传输。事实上,该协议不能保证数据准确无误的到达目的地。UDP在许多方面非常有效。当某个程序的目标是尽快的传输尽可能多的信息是(其中任意给定数据的重要性相对较低),可使用UDP.ICQ短消息使用UDP协议发送消息。许多程序将使用单独的TCP链接和单独的UDP链接。重要的状态信息随可靠的TCP链接发送,而主要数据通过UDP发送
UDP传输:
DatagramSocket与DatagramPacket(UDP的两个对象)
建立发送端,接收端。
建立数据包。
调用Socket的发送接收方法。
关闭Socket。
发送端与接收端是两个独立的运行程序。
TCP
在连接中进行大数据量传输
通过三次握手完成连接,是可靠协议
必须建立连接,效率会稍低
特点:(白话文)
1,面向连接,通过三次握手确定连接。
2,可靠,相对较慢,因为先要确定连接。
TCP传输:
Socket和ServerSocket
建立客户端和服务器端
建立连接后,通过Socket中的IO流进行数据的传输
关闭socket
同样,客户端与服务器端是两个独立的应用程序。
没端点,没连接,没IO,没传输。
Tcp传输最容易出现的问题:
客户端连接上服务端,两端都在等待,没有任何数据传输。
通过例程分析:
因为read方法或者readLine方法是阻塞式。
解决办法:
自定义结束标记
使用shutdownInput,shutdownOutput方法。