网络编程
概述
在网络通信协议下,不同计算机上运行的程序,可以进行数据传输
三要素
Ip地址
设备在网络中的地址是唯一标识
常用命令
ipconfig 常看本机IP地址
ping 检查网络是否连通
127.0.0.1 :表示本机IP,一般用来测试用的
端口
应用程序在设备中唯一的标识; 一个端口只能被一个应用程序使用
协议
数据在网络中传输的规则,常见的协议有UDP和TCP协议
UDP :不用连接;速度快,不安全,易丢失数字据
三种通信 :单播,组播,广播
TCP : 需要连接;速度慢,安全
InterAddress
作用:表示此类的IP地址
InterAddress.getByName:确定主机名,也可以是IP地址
getHostName : 获取主机名
getHostAddress : 返回文本显示中的IP地址,以字符串形式
TCP通讯原理
是一个可靠的网络协议,在通讯两端建立一个Socke对象
TCP
客户端
1.创建Socke地址,端口;
2.写入字符(getOutPutStream)后面必须接.getBytes方法
3.释放
服务端
1.创建ServerSocke,后面接端口号
2.阻塞:客户端不运行,服务端不接受。调用accept
3.读入,getInputStream
4.循环读,!=-1
5.释放
三次握手
1.就是客户端向服务器发送一个连接请求,等待它确定;
2. 服务器收到了,给了它一个回应
3. 两边确定连接,连接成功
四次挥手
前提:两边是正在相互连接状态
1.就是客户端向服务器发送一个取消连接请求,等待它确定;
2. 服务器收到了,给了它一个回应
3. 服务器向客户端发出确认取消信息
4.客户端确定,连接取消
服务器优化
弊端
1:一次只能接受一次
2 :第二次上传的时候会把第一次文件给覆盖掉
3 :使用循环无法跟多个客户端进行通讯
4 :使用多线程虽然可以让服务器处理多个客户端请求。但是资源消耗太大
优化
1:直接死循环
2 :UUID.randomUUID方法生成随机的文件名
3 :开启多线程(比较麻烦)
4 :加入线程池