随笔分类 -  网络编程

tcp和socket有什么关系,与http又有什么联系?用最直白的语言从头到脚为你讲清楚
摘要:最近项目中需要自己去实现一个http的接口。所以趁这个机会跟大家讲一下http和socket的关系,以及与TCP又有什么联系。 首先大家一定要明确一点,在网络分层架构当中,HTTP协议是属于应用层的,tcp协议是属于传输层的,也就是说它们是一种协议,是通信双方规定的一种规则,没有这种规则,两台主机就 阅读全文

posted @ 2021-01-25 14:42 一点sir 阅读(321) 评论(0) 推荐(0)

socket网络编程知识梳理,让你学会造轮子的能力
摘要:在前面几篇中,我给大家介绍了socket的相关知识,也给出了详细的代码,从socket的基本介绍,到IO多路复用,以及粘包拆包,最后到心跳包问题。总的来说大概都把socket网络编程中能碰见的问题都讲了,但肯定讲得不够深入,会有一些遗漏,如果有哪些知识点技术点的遗漏,欢迎大家指出,本人虚心接受。 现 阅读全文

posted @ 2020-11-15 10:56 一点sir 阅读(234) 评论(0) 推荐(0)

socket网络编程(六)——心跳包问题
摘要:1、为何需要心跳包 问大家一个问题,如果客户端和服务端长时间没有相互发送数据的话,那么我们怎么来判断这个连接是否存在的呢?有些人可能很自然地说直接send一下不就可以了,确实可以这样进行判断,那么我们发送的时候可以选择发送任何东西,所以一般都是发送一个空包,这个就是心跳包。 跳包之所以叫心跳包是因为 阅读全文

posted @ 2020-11-13 21:49 一点sir 阅读(1372) 评论(0) 推荐(0)

socket网络编程(五)——粘包拆包问题
摘要:今天和大家讲一下socket网络编程中粘包和拆包的问题。 1、出现粘包拆包的原因 假设一个这样的场景,客户端要利用send()函数发送字符“asd”到服务端,连续发送3次,但是服务端休眠10秒之后再去缓冲池中接收。那么请问10秒之后服务端从缓冲区接收到的信息是“asd”还是“asdasdasd”呢? 阅读全文

posted @ 2020-11-13 21:47 一点sir 阅读(738) 评论(0) 推荐(0)

socket网络编程(三)——select多路复用问题
摘要:1、select诞生的原因 在上文《socket网络编程(二)—— 实现持续发送》我们提到了多客户端的时候,多台客户端发送数据到服务端的话,只能有一台客户端可以正常发送和接受数据,另外一台完全没有反应,那这个问题怎么解决呢?很多人可能第一反应想到利用多线程技术,线程多的话用线程池来维护。的确,多线程 阅读全文

posted @ 2020-11-05 09:49 一点sir 阅读(550) 评论(0) 推荐(0)

socket网络编程(四)——epoll多路复用问题
摘要:1、epoll诞生的原因 问大家一个问题,如果要设计一款有着千万级别并发的系统,你的客户端和服务端的网络通信底层该怎么设计?我在上一篇文章(socket网络编程(三)——select多路复用问题)中有说到用select可以实现IO多路复用,但是select的设计有瓶颈所在,超过十万的并发效率就非常慢 阅读全文

posted @ 2020-11-04 23:46 一点sir 阅读(460) 评论(1) 推荐(0)

socket网络编程(二)—— 实现持续发送
摘要:在《socket网络编程(一)——初识socket》一文里我们提到了,客户端发送了数据了之后,不管服务端还是客户端都close退出了,也就是说只能发送一次数据,这显然不符合实际的用途。那么该如何更改程序呢? 1、持续发送 要想实现持续发送,聪明的你可能想到了用循环,思路完全正确,但是循环多少次呢?实 阅读全文

posted @ 2020-10-28 12:35 一点sir 阅读(616) 评论(1) 推荐(0)

socket网络编程(一)——初识socket
摘要:出现一项技术,首先我们弄懂一下,为什么要出现。那么为什么要出现socket这玩意呢?可以很简单的用一句话来概括: 为了实现两台计算机的通信 1、socket诞生的原因 两台装有操作系统的机子要想实现通信,第一要联网,第二通信双方一定制定某种规则。我们平时最为常见的http请求也是一种通信协议,只不过 阅读全文

posted @ 2020-10-24 20:04 一点sir 阅读(354) 评论(0) 推荐(0)

导航