学习笔记之面向对象编程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();}}