学习笔记之面向对象编程25(网络编程)
来源:互联网 发布:电脑网络摄像头 编辑:程序博客网 时间:2024/05/16 06:53
(一)网络基础
首先,网络编程!=网站编程,网络编程相对底层一些,比如QQ,网站编程比如编网页和动态网站,网站的编程只是构建在网络编程的底层的基础上。
《1》计算机网络的主要功能:资源共享;信息传递与集中处理;均衡负荷与分布处理;综合信息服务
《2》什么是网络协议:计算机网络中实现通信必须有一些约定即通信协议,对速率,传输代码,代码结构,传输控制步骤,出错控制等指定标准。
《3》网络通信接口:为了使两个节点之间能进行对话,必须在他们之间建立通信工具(即接口),使彼此之间,能进行信息交换,接口包括两部分,分别是:硬件装置,用来实现结点之间的信息传递;软件装置,规定 双方进行通信的约定协议
《4》通信协议分层思想
a:为什么要分层
由于结点之间联系很复杂,在制定协议时,把复杂成分分解成一些简单的成分,再将他们复合起来,最常用的复合方式是层次方式,即同层间可以通信,上一层可以调用下一层,而与下一层不发生关系,隔层互不影响,利于系统的开发和扩展。
b:通信协议的分层协定
把用户应用程序作为最高层,把物理通信作为最底层,将期间的协议处理的若干层,规定每层处理的任务,也规定每层的接口标准。
《5》参考模型(自上而下)
OSI参考模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
TCP/IP参考模型:应用层,传输层(segment),网络层(packet),物理+数据链路层
(二)协议
《1》IP(Internet protocol)协议
IP做的最大的贡献是提供了独一无二的IP地址;
IP协议是网际层的主要协议,支持网间互连的数据报通信,它提供的主要功能有:无连接数据报传送,数据报路由选择和差错控制
《2》TCP(transmission control protocol)协议
是专门设计用于在不可靠的因特网提供可靠,端到端的字节流通信的协议,它是一种面向连接的协议,TCP连接是字节流而非报文流;
TCP传的任何东西认为是可靠的,一定能传过去,但比较慢,效率低
《3》UDP(user data protocol)
UDP传输过去的东西,对方与否不知道,不可靠,但效率高;
UDP向应用程序提供了一种发送的封装的原始IP数据报的方法,并且发送时无需建立连接,是一种不可靠的连接。
《4》Socket
一般的网络编程都叫socket编程;
两个java应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一端成为一个Socket;
只有TCP才分Server和Client,在TCP中,Server那端叫做ServerSocket,client那端叫做Socket;
Socket通常用来实现Client-Server连接;
java.net包中定义的两个类Socket和ServerSocket,分别用来实现双向连接的Client和Server端;
建立连接时所需的寻址信息为远程计算机的IP地址和端口号;
端口号在计算机内部为2个字节,2个字节最多有65536个端口号,一台机器上,一个应用程序可以占多个端口号;
举例如下:
import java.net.*;import java.io.*;public class TCPServer {public static void main(String[] args) throws Exception{ServerSocket ss = new ServerSocket(12342);Socket s = ss.accept();DataInputStream dis = new DataInputStream(s.getInputStream());System.out.println(dis.readUTF());dis.close();s.close();}}
import java.net.*;import java.io.*;public class TCPClient {public static void main(String[] args) throws Exception{Socket s = new Socket("10.170.43.213",54123);OutputStream os = s.getOutputStream();DataOutputStream dos = new DataOutputStream(os);dos.writeUTF("你好啊");dos.flush();dos.close();s.close();}}
- 学习笔记之面向对象编程25(网络编程)
- [学习笔记]python之面向对象编程
- JavaScript学习笔记之面向对象编程
- C++之面向对象编程学习笔记
- python学习笔记(三)之面向对象编程
- Python之学习笔记(面向对象编程)
- 学习笔记之JavaSE(10)--面向对象编程1
- 学习笔记之JavaSE(11)--面向对象编程2
- 学习笔记之JavaSE(12)--面向对象编程3
- 学习笔记之JavaSE(13)--面向对象编程4
- 学习笔记之JavaSE(14)--面向对象编程5
- 学习笔记之JavaSE(15)--面向对象编程6
- 学习笔记之JavaSE(16)--面向对象编程7
- 学习笔记之JavaSE(17)--面向对象编程8
- 学习笔记之JavaSE(18)--面向对象编程9
- 学习笔记之JavaSE(19)--面向对象编程10
- 学习笔记之JavaSE(20)--面向对象编程11
- 学习笔记之面向对象编程3(访问控制)
- AfxGetModuleState() 与 AfxGetModuleThreadState()
- 【机器学习】EM算法
- ssm框架详解教程(Spring+SpringMVC+Mybaits)
- tensorflow模型save和restore
- JMeter接口测试实战-参数化
- 学习笔记之面向对象编程25(网络编程)
- 关于nginx配置
- asList的使用缺陷—asList 转成的列表不可操作
- 2017年全球大数据产业报告之海外篇(第八集)
- Unity中实现摇杆功能
- java泛型
- Revit开发之非模态对话框下的外部事件 WPF
- git自动部署
- Python3的re.match()、re.search()和re.findall()