![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
network
Lich Howger
这个作者很懒,什么都没留下…
展开
-
64-网络分层架构
我们来说一下网络分层架构网络传输其实是分层组织的,每一层都有自己的功能每一层其实都靠着下一层来支持为什么要分层管理呢1.各层之间相互独立,上层不需要知道下层如何实现2.灵活性好,各层都可以采用最适合的技术来实现3.易于实现和标准化网络分层有两种模式1.OSI 七层2.TCP 四层这是两种不同的组织发布的两种分层先说OSI,是国际标准1.物理层2....原创 2018-11-25 21:55:21 · 268 阅读 · 0 评论 -
65-UDP通信
UDP通信UDP是无连接的,不可靠的报文传输,但是速度很快由于UDP是无连接的,所以服务器端不需要额外创建监听的套接字只用指定好IP和port端口,监听这个地址,等待客户端直接通信即可我们来写一个简单的服务器和客户端涉及到的方法有:func ResolveUDPAddr(net, addr string) (*UDPAddr, error) func ListenUD...原创 2018-11-26 14:02:31 · 125 阅读 · 0 评论 -
66-TCP浅析
TCP通信包括3次握手和4次挥手我们分别来说一下第一阶段.三次握手1.首先client给server发送一个随机的SYN号2.s收到这个SYN后,会发送一个SYN+1的ACK确认号,并且同时发送另一个随机的SYN号3.c收到s发送的ACK和SYN,就发送一个s的SYN+1的ACK确认号这样就是三次握手了很简单吧第二阶段.数据传输1.c开始发送数据,会在刚刚s发送...原创 2018-11-26 14:03:01 · 259 阅读 · 0 评论 -
67-TCP传输文件
先来服务器端func main() { listener, err := net.Listen("tcp", "127.0.0.1:8080") if err != nil { fmt.Println("创建监听器失败...") return } defer listener.Close() fmt.Println("创建监听器成功...") for { ...原创 2018-11-26 14:03:33 · 190 阅读 · 0 评论 -
68-TCP通信
golang简单服务器func main() { //第一步:创建用于侦听的套接字 listener,err:=net.Listen("tcp","127.0.0.1:8080") //创建侦听器 if err!=nil{ fmt.Println("监听器创建失败:",err) return } defer listener.Close() fmt.Printl...原创 2018-11-26 14:04:07 · 167 阅读 · 0 评论 -
72-并发聊天室
go并发聊天室我们先来写简单的listen和connfunc main() { listener, err := net.Listen("tcp", "127.0.0.1:8080") if err != nil { fmt.Println("监听器创建失败...") return } defer listener.Close() fmt.Println("监听...原创 2018-11-27 22:24:31 · 151 阅读 · 0 评论 -
126-Servlet统计网页访问次数
我们来统计一下网页的访问次数创建个项目创建个Servlet我们先来一个BaseServlet可以作为基类方便管理public class BaseServlet extends HttpServlet { @Override public void doGet(HttpServletRequest request, HttpServletResponse...原创 2018-12-11 15:50:46 · 549 阅读 · 0 评论 -
128-请求转发和请求包含
请求转发和请求包含在说这两个东西之前我想说一下请求转发和重定向的区别请求转发----重定向 区别1.请求转发是1个请求,也就是A把请求直接给了B 重定向是2个请求,A收到请求,再向B发一个请求2.请求转发只能是一种请求方式,GET或者POST 重定向的第二个请求一定是GET3.请求转发的地址栏不会发生变化, 重定向的地址会变化,因为是两个请求4.请求转发只能...原创 2018-12-11 17:20:01 · 234 阅读 · 0 评论