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

黑马程序员 java网络编程

2013-01-01 12:15 381 查看
1、网络模型

OSI的网络模型分为七层:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
注:127.0.0.1是回环地址(测试网卡的),Localhost默认主机名
端口是从0~65535,其中0~1024系统程序保留 (web端口是8080或80,mysql端口为3306)

2、TCP和UDP区别:

TCP协议

①.在传输数据前需要建立连接,通过三次握手完成,TCP通信是面向连接的。

②.数据在传输过程中不需要大包操作,可以传输大量的数据。

③.由于是在建立连接的基础上进行数据的传输,该协议比较可靠。

④.想传数据,必须建立连接,在速度和效率上稍低。

UDP协议:

①.UDP是面向无连接的,双方进行通信不需要建立连接。

②.数据在传输过程中要进行打包操作,每个包的最大为64K字节。

③.面向无连接的传输,该协议不可靠。

④.不需要建立连接,传输速度快,效率高。

3、Java中网络编程类

java中用来网络编程的包是:java.net;

UDP协议通信使用的是java包中的DatagramSocket和DatagramPacket对象。建立通信机制的步骤是:

①.通过DatagramSocket对象是为网络通信构建一个通道,专业的叫法就是创建端口。

发送端具体实现代码:DatagramSocket ds = new DatagramSocket();

如果是发送端的话,这个端口可以不进行绑定,使用内核自由分配的端口号即可。如果是接受端的话,这个端口要必须要绑定到特定的端口,这个端口也可以叫做监视器。监视某个端口信息的变化。接收端具体实现代码:DatagramSocket ds = new DatagramSocket(端口号); 参看GDK手册有详细说明。

②.封包操作。

如果是发送端的话,首先要有数据,由于网络传输的都是二进制数据,所以在定义网络包的时候也要定义成二进制形式的。具体定义代码如下:

发送数据包数据:byte[] buf = "数据".getBytes();

接受数据包数据:byte[] buf = new byte[1024];

有了数据和数据缓冲区后,可以把这个数据和数据缓冲区封装成网络包:

发送端的数据包:DatagramPacket dp =

new DatagramPacket(buf,buf.length,InetAddress.getAddress("192.168.1.4"),10000);
接受端的数据包:DatagramPacket dp = new DatagramPacket(buf,buf.length);

③.发送接受操作。

根据端口Socket的方法,对数据包发送和接受操作。具体实现代码:

发送端:ds.send(dp);

接收端:ds.receive(dp); 接收到的数据包放到接收端定义的数据包缓冲区中。

④.关闭资源。

ds.close();

4、TCP协议通信使用的是java包中的Socket和ServerSocket对象。TCP和UDP的区别在于,TCP是建立连接,UDP是不需要连接,TCP操作的是端口输入输出流对象,UDP操作的是DatagramPacket包。按照TCP通信时不需要建立包,直接获取输入输出流操作即可。通信机制的

步骤如下:

①.TCP通信首先也是要建立Socket端口。UDP中客户端和服务端都是使用的DatagramSocket创建对象的方法,创建通信端口。TCP建立端口时,客户端和服务端是使用不一样的类。具体操作代码如下:

客户端:Socket s = new Socket();

服务端:ServerSocket ss = new ServerSocket(监听端口);

②.建立连接操作。

通过服务端ServerSocket对象的accept方法获得端口连接,在获得请求端口信息后,建立连接。

③.获得输入输出流操作。

在客户端获得Socket的getOutputStream()方法,通过该方法,输出数据。在服务端通过获得Socket的getInputStream()方法,读取数据。

④.关闭流操作。

客户端:s.close();

服务端:s.close; ss.close();

5、网络编程的实例

附录:UdpTrans.java <使用UDP协议进行简单的通信实验>

TcpDemo.java <使用TCP协议进行简单的通信实验>

UdpdownText.java <使用UDP协议上传文本文件>

UdpdownPic.java <使用UDP协议上传图片>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: