【java学习】Java网络通信基石Socket

来源:互联网 发布:重庆警方破获网络诈骗 编辑:程序博客网 时间:2024/06/11 08:34

“Http是web的基石,Socket是网络通信的基石”

昨天回顾了下socket,在此对Socket进行简单的总结



一、网络通信三要素:

【1】IP地址:唯一标识。
【2】协议:统一语言。
【3】端口号:区别不同程序通信。



二、IP地址:

IP地址:表示唯一主机。
IPV4,A,B,C,D类,,
64位,组成,,(目前提出IPV6还未普遍使用)



三、TCP/IP:

【物理层】:网线,双绞线,网卡
【数据链路层】:ARP,RARP
【网络层】: IP,ICMP,IGMP
【传输层】:TCP ,UDP,UGP
【应用层】:Telnet(23),FTP(21),SMTP,Http(80).

【端口号】:用于区分不同应用程序
范围,0-65535,其中0-1023系统保留

IP地址和端口号组成了Socket,Socket是网络上运行的程序之间双向通信链路的终结点,是TCP和UDP的基础



四、java中的网络支持:

【1】InetAddress:用于标识网络上的硬件资源。
【2】URL:统一资源定位符,通过URL可以直接读取或写入网络上的数据
【3】Sockets:使用TCP协议实现的网络通信的Socket相关的类

【4】Datagram:使用UDP协议,将数据保存在数据报中,通过网络协议进行通信



五、Socket通信:

Tcp协议是面向连接,可靠的,有序的,以字节流的方式发送数据。

基于TCP协议实现网络通信的类
客户端的Socket类
服务器端的ServerSocket类

Socket通信实现步骤
【1】创建ServerSocket和Socket
【2】打开连接到Socket的输入/输出流
【3】按照协议对Socket进行读写操作
【4】关闭输入输出流,关闭Socket



六、单客户端单服务器:

【服务器端】
1.创建ServerSocket对象,绑定监听端口
2.通过accept()方法阻塞监听客户端请求
3.连接后,通过输入流读取客户端发送的请求信息
4.通过输出流相应客户。
【客户端】
1.创建Socket对象,指定需要连接的服务器的地址和端口号
2.连接建立后,通过输入流向服务器端发送请求信息
3.通过输入流获取服务器响应的信息。
4.关闭相关资源



七、单服务器,多客户端:

【服务器】
1.服务器创建ServerSocket,循环调用accept()等待客户端连接
2.客户端创建一个Socket并请求和服务和服务器端连接
3.服务器接收客户端请求,创建Socket与该客户端建立专线连接
4。建立连接的两个Socket在一个单独的线程上对话
5.服务器端继续等待新的连接。
【客户端】
1.创建Socket对象,指定需要连接的服务器的地址和端口号
2.连接建立后,通过输入流向服务器端发送请求信息
3.通过输入流获取服务器响应的信息。
4.关闭相关资源



八、实现UDP编程:

UDP协议(用户数据报协议)是无连接,不可靠,无序的

相关操作类,
DatagramPacket:表示数据报包
datagramSocet:进行端到端通信的类
【服务器】
1,创建DatagramSocket,指定端口号
2,创建DatagramPacket
3,接收客户端发送的数据信息
4,读取数据
【客户端】
1,定义发送信息
2,创建DatagramPacket,包含将要发送的信息
3,创建DatagramSocket
4,发送数据



九、细节

【注意】
对于同一个socket,如果关闭了输出流,则与该输出流关联的socket也会被关闭,所以一般不用关闭流,直接关闭socket即可

【TCP通信传输对象】
将输入输出流封装成,ObjectOutStream

【TCP通信传输文件】
将输入输出流封装成BufferedOutputStream

原创粉丝点击