目录
一、网络编程概述
1.计算机网络
把不同区域的计算机(广义上的)通过通信设备和线路连接起来,
可以实现数据的传输和共享的系统
2.发展过程
实现不同计算机之间联系,必须有介质连接
最开始在一间办公室
后来一栋楼
一个城市
一个国家
全球
3.作用
聊天-->聊天软件 QQ
java语言是支持网络间的数据传输的,将底层的细节封装起来了,
给程序员提供了一套标准的类库,
很方便使用java语言开发出可以进行网络通信的软件.
4.核心问题
借助计算机网络,实现我们缩写的程序,在不同的电脑上,
可以进行数据传输.
如何找到网络世界中的目标主机,以及目标软件
win+r cmd ipconfig 查找自己电脑的ip:192.168.124.144
如何安全可靠的进行数据传输 协议 规则
二、网络模型
OSI参考模型,是一个理想化的标准模型
分为7层
实际上的使用Tcp/ip网络模型
分为4层
应用层(Http)
运输层(协议)
网络层(IP)
物理链路层(硬件设备)
分层原因
在不同的层中,对数据加入不同的头(协议,ip),
逐层分工处理.
三、通信要素
三要素:IP地址、端口号和通信协议
1.IP地址
目标主机,以及目标软件
IP:在网络世界中,是计算机地址
局域网地址: 192.168.1.20 连接到路由器,会自动分配ip
广域网地址: 家里的宽带 与外界连接
本机地址: 本地回环地址 127.0.0.1
2.端口
ip找主机
端口找程序
ip+端口 找到目标计算机 以及你想要的程序
端口号0-65535之间 由于0-1024被一些系统程序使用
所以我们开发的程序可以从1204-65535区间定义
但是不能与已有的端口冲突
3.通信协议
为了安全可靠的进行数据传输,需要对传输内容,速率,出错之后的吃力办法等进行控制
而制定的一些规约,成为协议.
传输层有两个主要的协议:
传输控制协议TCP(Transmission Control Protocol)
使用Tcp协议进行数据传输前,
必须先检测网络是否通畅,客户端是否能连接到服务器端,
如果能连接到,则进行数据传输,如果连接不到,会报错.
采用的是3次握手的机制
tcp是可靠的,相对udp效率低
用户数据报协议UDP(User Datagram Protocol)
将数据封装数据报
数据报包含数据,自己的ip,目标ip
发送前不需要建立连接,直接发送 例如发射导弹(目标坐标)
是不安全的,但是效率高
四、java中的两种协议下的编程
基于TCP协议的编程
服务器端:
ServerSocket serverSocket = new ServerSocket(9998);
Socket socket = serverSocket.accept();//监听
客户端:
Socket socket=new Socket("127.0.0.1",9998); //创建Socket对象时,建立与服务器端连接
socket.getOutputStream();//获得输入流
socket.getInputStream();//获得输出流
基于UDP协议的编程
流 程:
1. DatagramSocket与DatagramPacket
2. 建立发送端,接收端
3. 建立数据报
4. 调用Socket的发送、接收方法
5. 关闭Socket
发送端与接收端是两个独立的运行程序