您的位置:首页 > 理论基础 > 计算机网络

黑马程序员-网络编程基础知识

2013-06-08 21:31 351 查看
<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流!

第一节概述

一、网络编程

a)        
OSI参考模型

b)       
TCP/IP参考模型

二、网络通讯要素

a)        
IP地址

                       
i.              网络中设备的标识

                     
ii.              不易记忆,可用主机名

                   
iii.              本地回环地址:127.0.0.1
主机名:localhost

b)       
端口号

                       
i.              用于标识进程的逻辑地址,不同进程的标识

                     
ii.              有效端口:0~~65535,其中0~~1024系统使用或保留端口

c)        
传输协议

                       
i.              通讯的规则

                     
ii.              常见协议:TCP/UDP

三、网络参考模型

OSI参考模型
 

TCP/IP参考模型
应用层
 

应用层
表示层
 

会话层
 

传输层
 

传输层
网络层
 

网络层
数据链路层
 

主机至网络层
物理层
 

四、InetAddress类

Java提供了InetAddress类来代表IP地址,InetAddress下还有两个子类:Inet4Address、Inet6Address,他们分别代表Internet
Protocol version 4(Ipv4)地址和Internet Protocol version 6(Ipv6)地址

       InetAddress类没有提供构造器,而是提供了如下两个静态方法来获取InetAddress实例。

a)      
getByName(String host):根据主机获取对应的InetAddress对象

b)     
getByAddress(byte[] addr):根据原始IP地址来获取对应的InetAddress对象

InetAddress 还提供了如下三个方法来获取InetAddress实例对应的IP地址和主机名。

a)      
String getHostAddress:返回该InetAddress实例对应的IP地址字符串(以字符串形式)

b)     
String getHostName:获取此IP地址的主机名。

除此之外,InetAddress类还提供了一个getLocalHost()方法来获取本机IP地址对应的InetAddress实例。

五、TCP和UDP

a)        
UDP

                       
i.              将数据及源和目的封装成数据包,不需要建立连接

                     
ii.              每个数据包的大小限制在64k内

                   
iii.              因为无连接,所以是不可靠协议

                    
iv.              不需要建立连接,速度快

b)       
TCP

                       
i.              建立连接,形成传输数据的通道

                     
ii.              在连接中进行大数据量传输

                   
iii.              通过三次握手完成连接,是可靠协议

                    
iv.              必须建立连接,效率会稍低

六、Socket

a)        
Socket就是为网络服务提供的一种机制

b)       
通信的两端都有Socket

c)        
网络通信其实就是Socket间的通讯

d)       
数据在两个Socket间通过IO传输

第二节 UDP传输

一、建立UDP传输的步骤

a)        
建立发送端,接收端

b)       
建立数据包

c)        
调用Socket的发送接收方法

d)       
关闭Socket

二、DatagramSocket的构造器

a)        
DatagramSocket( ):创建一个DatagramSocket实例,并将该对象绑定到本机默认IP地址、本机所有可用端口中随机选择某个端口

b)       
DatagramSocket( int port):创建一个DatagramSocket实例,并将该对象绑定到本机默认的IP地址、制定端口。

c)        
DatagramSocket(int port,InetAddress Iaddr ):创建一个DatagramSocket实例,并将该对象绑定到指定的IP地址、制定端口。

三、DatagramPacket(数据包)的构造方法。

a)        
DatagramPacket(byte[] buf,int length):以一个空数组来创建DatagramPacket对象,该对象的作用是接收DatagramPacket中的数据。

b)       
DatagramPacket(byte[] buf,int length,InetAddress addr,int port ):以一个包含数据的数组来创建DatagramPacket对象,创建该DatagramPacket对象时还指定了IP地址和端口—这就决定了该数据报的目的地。

c)        
InetAddress getAddress( ):当程序准备发送此数据报时,该方法返回此数据报的目标机器的IP地址;当程序刚接收到一个数据报时,该方法返回该数据报的发送主机的IP地址。

d)       
int getPort( ):当程序准备发送此数据报时,该方法返回此数据报的目标机器的端口;当程序刚接收到一个数据报时,该方法返回该数据报的发送主机的端口。

e)        
byte[ ] getData( ):以字节数组的方式返回数据报中的数据。

四、发送和接收方法

a)        
receive(DatagramPacket p):从该DatagramSocket中接收数据报。

b)       
send(DatagramPacket p):以该DatagramSocket对象向外发送数据报。

第三节 TCP传输

一、建立TCP传输的步骤

a)        
建立客户端(Socket)和服务端(serverSocket)

b)       
建立连接后,通过Socket中的IO流进行数据的传输

c)        
关闭socket

二、Socket构造器和ServerSocketgouzqi

a)        
客户端:Socket(InetAddress,int port):创建指定远程主机、远程端口的Socket

b)       
服务端:ServerSocket(int port):用指定的端口创建一个ServerSocket

c)        
Socket accept( ):此方法时服务端的方法,可以获取连接到服务端的客户端Socket,如果没有客户端连接进来,该方法一直等待。

三、客户端和服务端的通信方法

当客户端、服务端产生了对应的Socket之后,就可以通过各自的Socket进行通讯。Socket提供了如下方法来获取输入流和输出流。

a)        
InputStream getInputStream( ):返回该Socket对象对应的输入流,让程序通过该输入流从Socket中取出数据。

b)       
OutputStream getOutputStream( ):返回该Socket对象对应的输出流,让程序通过该输出流向Socket中输出数据

 

<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流!

详细请查看:<ahref="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息