[黑马程序员]--Java语言网络编程

来源:互联网 发布:录音笔 知乎 编辑:程序博客网 时间:2024/05/22 17:46

------- 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方法。

------- android培训、java培训、期待与您交流! ----------

原创粉丝点击