Java课后总结(网络、基于TCP协议的Socket编程)

网络

网络就是连接在一起共享数据和资源的一组计算机。

计算机网络:实现数据通信,可划分为(局域网,城域网,广域网)。

网络分层模型

分层 功能
应用层 网络服务和最终用户的接口
表示层

数据的表示、安全和压缩

会话层

建立、管理和终止会话

传输层 定义传输数据的协议端口号,流量控制和差错回复
网络层 进行逻辑地址寻址,实现不同网络之间的路径选择
数据链路层 建立逻辑连接,进行硬件地址寻址,差错校验等
物理层 建立、维护、断开物理连接
HTTP

HTTP即为超文本传输协议,全名Hypertext transfer protocol,它规定了全球网(WWW)服务器和浏览器互相通信的规则是一种数据传送协议,HTTP的连接很简单,是无状态的,无状态是指协议对于事务处理没有记忆能力。

HTTPS
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。即:网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密

(注:  http效率更高,https安全性更高。)

端口

定义:每台主机都有若干个端口,用于收发数据时区分该数据发给哪个进程或者从哪个进程发出的。

范围:0~65535;

在一台计算机内两个进程不能同时使用一个端口。

服务器

        邮件服务器

        web服务器:

(1)Microsoft IIS   (2)Apache  (3)Tomcat

基于TCP协议的Socket编程 

位于 java.net包中

Socket类:Socket对象在客户端和服务器之间建立连接。(套接字)

ServerSocket类 :ServerSocket类对象等待客户端建立连接,连接建立后进行通信。

构造方法:

Socket  s  =  new Socket("localhost", 8080);

ServerSocket  ss=  new ServerSocket(8080);

常用方法:

getInputStream()       用套接字可以获取输入输出流,通过输入输出流可以进行数据的传输

shutdowmOutput()   用套接字可以关闭半读或半写状态

accept()   用于等待客户端发起通信

考代码:

public class Local {            //客户端类
public static void main(String[] args) {
Socket s=null;
OutputStream os=null;
try {
s= new Socket("localhost", 8080);       //创建客户端连接,指定服务器位置为本机,端口号为8080
os =s.getOutputStream();               //打开输出流
String str="我是客服端,收到请回答";
os.write(str.getBytes());
s.shutdownOutput();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {try {
if(os!=null) {os.close();}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

public class Servers {    //服务器类
public static void main(String[] args) {
InputStream is=null;
InputStreamReader isr=null;
BufferedReader br=null;
try {
ServerSocket ss=new ServerSocket(8080);         //创建一个服务器,指定8080端口开始监听
Socket s1=   ss.accept();                               //等待客户端发起通信
is=s1.getInputStream();
isr =new InputStreamReader(is);
br=new BufferedReader(isr);
String st;
while ((st=br.readLine())!=null) {
System.out.println(st);
}
s1.shutdownInput();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
br.close();            //关闭资源
isr.close();
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}


            

你可能感兴趣的:(Java课后总结(网络、基于TCP协议的Socket编程))