Java网络编程

来源:互联网 发布:全球人工智能市场规模 编辑:程序博客网 时间:2024/05/20 10:56


网络协议


Ip地址  InetAddress

InetAddress ia = InetAddress.getLocalHost();

InetAddress ia = InetAddress.getByName("www.baidu.com");

InetAddress[] ias = InetAddress.getAllByName("www.baidu.com");

System.out.println(ia.getHostAddress());//


传输协议



UDP协议 :面向无连接

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

2、每个数据包的大小限制在64k

3、因无连接,所以是不可靠协议

4、不需要建立连接,速度快

TCP协议 : 面向连接

1、建立连接,形成传输数据的通道

2、在连接中进行大数据量传输

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

4、必须建立连接,效率会稍低

网络编程比较重要的类

socket类

1、socket就是为网络服务提供的一种机制

2、通信的两端都有Socket

3、网络通信其实就是Socket通信

4、数据在两个Socket间通过IO传输


UDP传输:

发送需求:通过UDP传输方式,将一段文字数据发送出去

  思路:

  1、建立UDPSocket服务

  2、提供数据,并将数据封装到数据包中

  3、通过socket服务的发送功能,将数据包发送出去

  4、关闭资源

接收需求:定义一个应用程序,用于接收UDP协议传输的数据

  1、定义udpsocket服务。定义接收端的时候,通常会监听一个端口。其实就是给这个接收网络应用程序定义数字标识

  2、定义一个数据包,因为要存储接收到的字节数据。

  因为数据包对象中有更多功能可以提取字节数据中的不同信息。

  3、通过socket服务的receive方法将接收到的数据存入定义好的数据包中

  4、通过数据包对象的特有功能。将这些不同的数据取出。

  5、关闭资源



TCP传输

1、SocketServerSocket

2、建立客户端和服务器端

3、建立连接后,通过socket中的IO流进行数据的传输

4、关闭socket

同意,客户端与服务器端是两个独立的应用程序

当客户端跟服务端建立socket连接后,则输入、输出流就已经创建成功

TCP客户端

分析:

 * 通过查阅socket对象,发现在建立对象是,就可以去连接指定主机

 * 因为tcp是面向连接的,所以 在建立socket服务时,形成通路后,在该同道进行数据的传输

 * 步骤:

 * 1、创建socket服务对象,并指定要连接的主机和端口

 * 2、获取socket流中的输出流,将数据写入到该流中,通过网络发送给服务器端

* 3、获取socket流中的输入流,将服务器端反馈的数据获取到

TCP服务端

 * 1、建立服务端的socket端口,serverSocket(Port)  监听端口

 * 2、获取连接过来的客户端对象

 * 通过serverSocket的  accept()方法。所以这个方法阻塞式的。没有连接就会等。

 * 3、客户端如果发送过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端的读取发过来的数据

 * 4、关闭(一般服务器是不关闭的)

 

TCP文本传输需要注意的是

一、如果传输的是文本内容 , 就直接用Reader/Writer 体系比较方便

二、如果传输的是其他文件内容:InputStream/OutputStream。需要注意的问题如下:

1、如果操作的是基本数据类型,可以使用DataInputStream/ DataOutputStream 来操作

2、如果使用了带缓存的流,则必须要记住要flash(),将流中的数据强行写入服务器中的读取流

3、当客户端把文件内容全部写入到网络流中后,就要关闭网络写入流,方法:socket.shutdownOutput();同理服务器端读取完文件内容后,也必须关闭读取客户端的方法:socket.shutdownInput();。如果不关闭,则服务器端一直会等待到结尾位置

4、服务器端流关闭顺序:跟文件相关的资源先关闭,然后关socket.close()。最后是serverScoket.close();



URLConnection  、 URL   、 SocketAddress 也是比较重要的类

URL类 

封装了解析地址的类

能直接获取 ip Port、 资源路径

URLConnection

封装了请求、响应的信息

可以获取响应的流,也可以获取发送流

URL url = new URL(path);

URLConnection con = url.openConnection();

InputStream in = con.getInputStream();//其实就是获取Socket对象的方法

OutputStream out = con.getOutputStream();


SocketAddress 类

其子类:InetSocketAddress , 类实现 IP 套接字地址(IP 地址 端口号)。

封装了IP  和 端口  



0 0
原创粉丝点击