网络
网络就是连接在一起共享数据和资源的一组计算机。
计算机网络:实现数据通信,可划分为(局域网,城域网,广域网)。
网络分层模型
分层 | 功能 |
应用层 | 网络服务和最终用户的接口 |
表示层 | 数据的表示、安全和压缩 |
会话层 | 建立、管理和终止会话 |
传输层 | 定义传输数据的协议端口号,流量控制和差错回复 |
网络层 | 进行逻辑地址寻址,实现不同网络之间的路径选择 |
数据链路层 | 建立逻辑连接,进行硬件地址寻址,差错校验等 |
物理层 | 建立、维护、断开物理连接 |
HTTP即为超文本传输协议,全名Hypertext transfer protocol,它规定了全球网(WWW)服务器和浏览器互相通信的规则是一种数据传送协议,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();
}
}
}
}