java网络编程基础概念
来源:互联网 发布:网络诈骗投诉电话多少 编辑:程序博客网 时间:2024/04/30 22:28
1、 网络基础知识
a) 网络基本概念
i. 计算机网络,就是把分布在不同地理区域的计算机与专门的外部设备通信线路互联成一个规模大、功能强的网络系统,从而是众多的计算机可以方便的互相传递信息,共享硬件、软件、数据信息等资源。
ii. 网络体系结构:“开放系统互联参考模型”OSI模型,该模型把计算机网络分成物理层、数据链路层、网络层、传输层、会话层、表示层、应用层等七层。
b) 通信协议
i. 计算机网络中实现通信必须有一些约定,即通信协议。对速率、传输代码、代码结构。传输控制步骤、出错控制等制定标准。
ii. TCP协议:提供可靠的数据传输服务的规则。
iii. IP协议进行IP数据包的分割和组装。
注:但是,通过IP协议并不能清楚的了解到数据包是否顺利的发送到目标计算机。而使用TCP协议,它将数据包成功发送给计算机后,会要求发送一个确认,如果在某个时间内没有收到确认,TCP将重新发送数据包。
c) IP地址和端口号
i. IP地址:为实现网络中不同计算机之间的通信,在网络中的媚态及其都必须有一个与众不同的标识,这就是IP地址。
1. 格式:数字型、32位、由4段8位的二进制数组成。一般表示为十进制形式(4个0~255的十进制整数),中间用圆点隔开,例如:192.168.49.36。
2. 域名地址:也是分段表示的,便于记忆的字符串形式。
ii. 端口:一个十六位的整数,用于表示数据交给哪个通信程序处理。因此,端口就是应用程序与外界交流的出入口,它是一种抽象的软件结构,包括一些数据结构和I/O缓冲区。
不同的应用程序处理不同端口上的数据,同一台机器上不能有两个程序使用同一个端口,端口号可以从0到65535,通常将它分为三类:
公认端口:从0到1023,他们紧密绑定一些服务。
注册端口:从1024到49151.他们松散的绑定一些服务。
动态和/或私有端口:从49152到65535.这些端口是应用程序使用的端口,应用程序一般不会主动使用这些端口。
2、 Java的基本网络应用
a) InetAddress:用于描述IP地址的对象
i. InetAddress类没有提供构造方法,而是提供了两个静态方法来获取InetAddress实例
1. getByName(String host):根据主机获取对应的InetAddress对象。
2. InetAddress类没有提供构造方法,而是提供了两个静态方法来获取InetAddress实例
b) 什么是UDP协议
i. UDP协议是用户数据报,在网络中它与TCP协议一样用于处理数据包。在OSI模型中,在第四层——传输层,处于IP协议的上一层。
ii. UDP是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。容易丢包。并且包要小于64K。
c) 在java中操纵UDP
i. DatagramSocket:此类表示用来发送和接收数据报包的套接字。
DatagramPacket:数据包
ii. 使用UDP协议的发送与接收
1. 发送端:
a) 创建一个UDPsocket服务
DatagrameSocketds = new DatagramSocket();
b) 将数据封装到数据包中
byte[] buf = "wo shi shu ju".getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,ip,port);
ip为IP地址。Port为端口。
c) 使用socket的send方法发送
ds.send(dp);
d) 关闭资源
ds.close()
2. 接收端
a) 创建一个upd接收端点,必须指明端口,监听次端口port
DatagrameSocketds=new DatagramSocket(port);
b) 创建一个空的数据包,用于存储接收到得数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
c) 使用receive方法接收数据,数据保存到数据包
ds.receive(dp);
d) 通过数据包获取相关信息
dp.getData();
dp.getAddress();
dp.getPort();
e) 关闭资源
ds.close();
d) TCP协议
i. 面向连接的
ii. 通过三次握手完成连接
iii. 可靠地协议
iv. 相对UDP稍慢
e) 在java中实现TCP协议编程
i. 服务端:SeverSocket
1. 建立tcpSocket服务,必须要监听一个端口
ServerSocket ss=newServerSocket(port);
2. 通过accptet方法,返回一个socket对象,同过这个socket与客户端的socket建立连接。
Socket s= ss.accept();
3. 通过socket获取输入输出流,进行信息通信
写:s.getOutputStream();
读:s.getInputStream()
4. 关闭资源
s.close();
ss.close();
ii. 客户端:Socket
1. 建立Socket客户端,ip代表要连接的目的地址和端口
Socket s=new Socket(ip,port)
2. 通过socket获取输入输出流与服务端通信
写:s.getOutputStream();
读:s.getInputStream()
3. 关闭资源。
s.close();
f) 上传文件图片
i. 客户端
1. 建立socket客户端,连接服务,要有目标ip和端口
2. 读取本地文件的内容
3. 输出到服务器端:通过socket的输出流
4. 传输结束:socket的shutdownOutput()
5. 接受服务端传过来的上传成功提示:通过socket的输入流
6. 关闭资源
ii. 服务器端
1. 建立ServerSocket服务,监听一个端口
2. 通过accept方法产生一个socket对象,与客户端建立通道。
3. 通过socket的输入流读取客户端穿过来信息
4. 将获取到的信息保存到文件。
5. 向客户端发出上传成功提示。
关闭资源- java网络编程基础概念
- Java网络编程基础概念
- java网络编程概念
- Unix网络编程基础概念
- WebService 及java网络编程等基础概念(一)
- 『黑马程序员』---java--网络编程--网络编程概念+UDP基础
- Java并发编程 基础概念
- java网络编程协议与基础1—基本网络概念
- 网络编程基础--重要概念介绍
- 基本网络概念(Java网络编程)
- Java网络编程 基本网络概念
- JAVA网络编程基础
- Java网络编程基础
- java网络编程基础
- Java网络编程基础
- Java基础网络编程
- Java网络编程基础
- java基础<网络编程>
- 动态内存分区分配方式模拟[转帖]
- 最长公共子序列的动态规划求解
- 基本matlab处理
- Qt学习之路(45): 自定义model之一
- 程序员每天该做的事
- java网络编程基础概念
- 闲说HeartBeat心跳包和TCP协议的KeepAlive机制
- linux shell--read命令详解
- Qt学习之路(46): 自定义model之二
- 黑马程序员之存储过程学习笔记:存储过程的基本使用
- ssh框架中插入数据到mysql出现乱码
- 宾馆管理系统
- 进程间通信 - 命名管道实现
- Qt学习之路(47): 自定义Model之三