1. 什么是计算机网络,计算机网络的作用?
a) 在物理位置上,多台计算机之间使用网线连接起来,就形成了计算机网络。
b) 网络分:局域网和广域网。
c) 计算机网络的作用就是“资源共享”。
2. 计算机网络编程指的是什么?
a) 使用一门计算机语言,实现计算机和计算机之间进行通信。
b) 例如java语言提供的java.net.*;如:Socket和ServerSocket。
3. 关于IP地址?
a) IP地址非常重要,因为IP是网络中每一台计算机的唯一标识。计算机之间进行通信完全靠IP地址进行连接。
b) 计算机和计算机之间通信每台计算机需要安装网卡和网卡驱动。
c) IP地址分为:IPV4和IPV6
i. IPV4目前用的比较多。例如:192.168.1.100
ii. IPV4计算机在存储的时候采用4个字节去存储。255.255.255.255
iii. IPV4最大大概可以表示4亿多台计算机。也就是说在广域网中最多有4亿多个真实IP。
d) 关于IP地址分类:A类网,B类网,C类网
i. A类网:网络ID号.主机号.主机号.主机号
ii. B类网:网络ID号.网络ID号.主机号.主机号
iii. C类网:网络ID号.网络ID号.网络ID号.主机号
4. 关于端口号PORT?
a) Oracle默认的端口是1521
b) Mysql默认的端口是3306
c) WEB网站默认的端口是80
d) Tomcat服务器默认的端口是8080
e) 端口号在计算机中是每一个服务的唯一标识。端口号在同一台计算机上不可以重复。
端口号取值范围:
一般用到的是1~65535。
其中0不使用,1-1023为系统端口,也叫BSD保留端口。
0-1023: BSD保留端口,也叫系统端口,这些端口只有系统特许的进程才能使用;
1024~65535为用户端口,又分为:BSD临时端口(1024-5000)和BSD服务器(非特权)端口(5001-65535)。其中:
1024-5000: BSD临时端口,一般的应用程序使用1024到4999来进行通讯;
5001-65535:BSD服务器(非特权)端口,用来给用户自定义端口。
5. 计算机之间通信需要协议?
a) 位于传输层的协议有:TCP、UDP
b) TCP和UDP区别?
i. TCP协议是面向有连接的协议。面向有连接的协议可以保证网络传输中不会丢失数据包。优点:不会丢失数据包。缺点:速度慢。
ii. UDP协议是面向无连接的协议。面向无连接的协议只负责发送数据,不管对方是否收到,或者是否丢失数据。优点:速度快。缺点:可能丢失数据。
6. 关于HTTP协议?
a) W3C组织定义的HTTP协议。
b) 生产浏览器(Browser)的厂商(微软,谷歌,Mozilla FireFox)都要遵循HTTP协议生产浏览器。
c) 生产服务器(Server)的厂商(IBM,BEA)都要遵循HTTP协议生产服务器。
7. 使用java实现计算机和计算机之间的通信?
a) Socket(客户端套接字)à插头(IP+PORT)
b) ServerSocket(服务器端套接字)à插座(PORT)
8. HTTP1.1协议的详细内容:
GET / HTTP/1.1Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*Accept-Language: zh-cnUser-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)Accept-Encoding: gzip, deflateHost: 192.168.1.100:8888Connection: Keep-Alive空白行消息正文HTTP协议四部分组成:消息头,消息报头,空白行,消息正文
9. 客户端向服务器端发送数据
1、服务器端实现
//1、服务器端实现class Server1 {public static void main(String[] args) throws IOException {System.out.println("服务器端启动,等待连接....");//1.创建ServerSocket对象,绑定端口,开始等待连接ServerSocket ss=new ServerSocket(6666);//2.接收连接accept方法,返回socket对象Socket server=ss.accept();//3.通过Socket对象,获取输入流InputStream is=server.getInputStream();//4 一次性读取数据//4.1 创建字节数组byte[] b=new byte[1024];//4.2 数据读取到字节数组中int len=is.read(b);//4.3 解析数组,打印字符串信息String msg=new String(b,0,len);System.out.println(msg);//5.关闭资源is.close();server.close();}}
2、客户端实现
class Client1 {public static void main(String[] args) throws IOException {System.out.println("客户端发送数据");//1.创建Socket(ip,port),确定连接到哪里Socket client=new Socket("127.0.0.1",6666);//2.获取流对象.输出流OutputStream os=client.getOutputStream();//3.写出数据os.write("TCP协议,我学会了!".getBytes());//4.关闭资源os.close();client.close();}}
10、服务器端向客户端回写数据
1、服务器端实现
class Server2 {public static void main(String[] args) throws IOException {System.out.println("服务器启动,等待连接。。。");//1.创建ServerSocket对象,绑定端口,开始等待连接ServerSocket s=new ServerSocket(6666);//2.接受连接accpet方法,返回Socket对象Socket server = s.accept();//3.通过Socket获取输入流InputStream is = server.getInputStream();//4 一次性读取数据//4.1 创建数组对象byte[] b=new byte[1024];//4.2 读取数据到字节数组中int len=is.read(b);//4.3 解析数组,打印字符串信息String msg=new String(b,0,len);System.out.println("服务器接收到的数据:"+msg);//======回写数据==========//5 通过socket获取输出流OutputStream os = server.getOutputStream();//6.回写数据os.write("服务器回写数据".getBytes());//7.关闭资源os.close();is.close();server.close();}}
2、客户端实现
class Client2 {public static void main(String[] args) throws IOException {System.out.println("客户端 发送数据");//1. 创建Socket(ip,port),确定连接到哪里Socket client=new Socket("127.0.0.1",6666);//2.通过Socket对象,获取输出流对象OutputStream os = client.getOutputStream();//3.写出数据os.write("客户端写数据了".getBytes());//4.通过Socket,获取输入流对象InputStream is = client.getInputStream();//5.读取数据byte[] b=new byte[1024];int len=is.read(b);System.out.println(new String(b,0,len));//6.关闭资源is.close();os.close();client.close();}}
11、文件上传案例
文件上传分析图解:
1【客户端】输入流,从硬盘中读取文件数据到程序中。
2.【客户端】输出流,写出文件数据到服务器。
3.【服务器】输入流,读取文件数据到服务器程序。
4. 【服务器】输出流,写出文件数据到服务器硬盘中。
1、服务器端实现
public class Demo04 {public static void main(String[] args) throws IOException {System.out.println("服务器端启动。。。");//1 创建服务器端ServerSocketServerSocket ss=new ServerSocket(6666);//2.服务端通过ServerSocket建立连接Socket server= ss.accept();//3.创建流对象//3.1 获取输入流,读取文件数据BufferedInputStream bis=new BufferedInputStream(server.getInputStream());//3.2 创建输出流,保存到本地BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("copy.jpg"));//4.读写数据byte[] b=new byte[1024*8];int len;while ((len=bis.read(b))!=-1){bos.write(b,0,len);}//5.关闭资源bis.close();bos.close();server.close();System.out.println("文件已经上传");}}
2、客户端实现
public class Demo05 {public static void main(String[] args) throws IOException {//1.创建流对象//1.1 创建输入流,读取本地文件BufferedInputStream bis=new BufferedInputStream(new FileInputStream("text.jpg"));//1.2 创建输出流对象,写到服务器Socket socket=new Socket("localhost",6666);BufferedOutputStream bos=new BufferedOutputStream(socket.getOutputStream());//2.写出数据byte[] b=new byte[1024*8];int len;while ((len=bis.read(b))!=-1){bos.write(b,0,len);bos.flush();}System.out.println("文件发送完毕");//释放资源bis.close();bos.close();socket.close();}}
12、信息回写分析图解:
1【客户端】输入流,从硬盘中读取文件数据到程序中。
2.【客户端】输出流,写出文件数据到服务器。
3.【服务器】输入流,读取文件数据到服务器程序。
4. 【服务器】输出流,写出文件数据到服务器硬盘中
5.【服务器】获取输出流,回写数据。
6.【客户端】获取输入流,解析回写数据。

