【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
- 【java学习】Java网络通信基石Socket
- java学习笔记---Socket应用网络通信
- Java网络通信Socket
- java 网络通信 socket
- 网络通信基石Socket (上)
- Java网络通信学习(一)- Java Socket 编程
- JAVA的网络通信----SOCKET
- Java中Socket网络通信
- java Socket网络通信简介
- java socket通信学习笔记
- java网络编程Socket通信常见异常
- java socket类实现网络通信
- java网络编程(6):socket通信
- Java网络编程之Socket通信
- java网络编程基础Socket通信应用
- Java网络计时器(socket通信)
- Java通信之Socket网络编程
- Java 用socket实现网络通信
- 单片机处理用串口接收频次较高的数据方式
- Linux中常用Makefile隐含规则
- CentOS命令行使用shadowsocks代理的方法
- webgl学习笔记一-绘图单点
- Servlet中方法的使用
- 【java学习】Java网络通信基石Socket
- JAVA-初步认识-第三章-比较运算符逻辑运算符
- Selenium 3.5+python2.7打开IE浏览器报错
- redis集群的搭建
- c++基础之类型转换
- tiny4412 设备树之按键中断(一)
- 实验3 编程、编译、链接、跟踪
- Python的特殊方法
- Servletconfig和ServletContext