科学健康资讯 · 内容仅供参考,不替代专业诊疗 联系我们|疾病百科
操作系统

linux下socket编程

2023-06-06 操作系统 本文链接

【学习进阶】学习 Swoole 需要掌握哪些基础知识?

1. 了解 Linux 操作系统进程和线程的概念

2. 了解 Linux 进程/线程切换调度的基础知识

3. 了解进程间通信的基础知识,例如:管道、UnixSocket、消息队列、共享内存

4. 了解 Socket 的基本操作,例如:accept、connect、send、recv、close、listen、bind

5. 了解 Socket 的接收缓冲区、发送缓冲区、阻塞/非阻塞、超时、IO复用

6. 了解 select、poll、epoll 的基本原理

7. 了解基于 select、epoll 实现的时间循环,如:Reactor 模型

8. 了解可读事件、可写事件、Tcp/IP 网络协议

9. 了解如何使用 gdb 调试 Linux 程序

10. 会使用 strace 跟踪进程的系统调用

11. 会使用 tcpdump 跟踪网络通信过程

12. 其他常用 Linux 系统工具,如:ps、lsof、top、vmstat、netstat、sar、ss、grep等

前天携家人出游,行至中电大厦等公交时,抬头一看电子指示牌,乐得我不行了。

估计是系统出了故障,电子屏上显示一堆出错日志信息,我笑着对女儿说“这报错我熟,网络连接出问题了,baba就是干这个的。”

日志信息有"Bad file descriptor"、"send select"、"socket operation>

职业探秘——物联网工程师

这个职业属于信息传输、软件和信息技术服务业中的软件和信息技术服务业

这个职业要从事这些工作:

1.负责具体物联网平台产品功能模块的设计开发;2.负责相应的功能模块测试;3.参与系统设计,编写相应的设计报告和技术文档;4.参与项目的设计,跟踪评估,协助控制项目进度。

该职业对应的本科专业:

物联网工程、网络工程、计算机科学与技术等计算机、电子信息类专业

该职业对应专业与高中主要学科的关联度:

语文C、数学A、英语B、物理A、化学E、生物E、政治D、历史E、地理E

该职业的前景:

物联网是继计算机、互联网和移动通信之后的又一次信息产业的革命性发展,目前被正式列为国家重点发展的战略性新兴产业之一。物联网产业具有产业链长、涉及多个产业群的特点,其应用范围几乎覆盖了各行各业。近几年,我国物联网也得到了前所未有的重视。巨大的市场需求将为物联网带来难得的发展机遇和广阔的发展空间,物联网的发展必然促使物联网相关产业交融,各产业各司其职、各取所需,最终形成一个强大的产业链,其中蕴含着难以想象的能量。

该职业的要求:

1.计算机、通信、电子信息类本科以上学历,1年以上相关工作经验;2.熟悉Eclipse开发环境,精通Java和面向对象设计方法,熟悉IO、多线程、Web Service,socket编程;3.熟悉一些主流Web后台开发框架(Spring、Hibermate、Struts2等);4.熟悉HTTP协议,熟悉JSP、Servlet、HTML、XML、JSon、AJAX、JS等技术;5.熟悉Linux操作系统;6.具有较强的学习、理解能力;7.具有较好的表达能力、善于沟通协作;8.熟悉物联网相关技术(Zigbee、蓝牙、RFID、嵌入式)和发展趋势优先。

什么是长连接,和短连接 ?

TCP短连接:

我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在client/server间传递一次读写操作

 TCP长连接

接下来我们再模拟一下长连接的情况,client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。

长连接短连接操作过程 

短连接的操作步骤是:

建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接

长连接的操作步骤是:

建立连接——数据传输...(保持连接)...数据传输——关闭连接

什么时候用长连接,短连接?

长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。

 而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。

容器不是一个内核对象

很多童鞋认为是Linux设计的问题,才导致容器的安全性比较差。但需要分清先后顺序,先有Linux然后才有容器。内核通过提供namespace, cgroup的底层特性,去支持用户态创建自己的容器抽象,内核压根就不知道有容器这个东西的。虽然有些开发者给内核提了一些PR,支持直接创建容器,如下下面几个API :container_create (创建容器)、fork_into_container(容器内启动进程)、container_socket(容器内启动socket),但目前没有被内核接收。内核能做的就是不断丰富namespace的隔离能力,将更多的特性放到namespace中。但还是那句话:容器不是一个内核对象。

平稳运行了一年多的断电报警云服务器最近又出现问题了。

几天前的一个晚上,大批报警器连接不上服务器,导致发生断电事件时,无法给用户拨打报警电话,也无法向用户推送wx报警消息。

客户连夜打电话给我,把我吵醒让我连夜处理。

我一番查找和分析之后,发现其实这也是个预料中的问题,因为使用的windows系统有socket的数量限制,而且从网上的相关资料还表示windows 2008有漏洞,socket链接有内存泄漏,并发数多时会出现no buffer available 的错误。

我让客户租了一台Linux 云服务器,爆肝将修改代码将其运行于Linux系统中,并通过远程升级两设备迁移到新服务器。

做完这些,所有报警器又恢复了平稳的工作。

客户也发来小红包表示感谢。

承蒙客户的信任,选择了我们的产品,即使再难,我们也要保证这些售价仅一百余元的报警器在持续几年的时间,无任何间断地正常工作。

【10K月薪无人问,评论区里富豪多】南宁的Java全栈工程师,无人问津。[捂脸]以下是原来的招聘内容。

工作内容:

1.负责公司项目的服务端程序开发;

2.负责现有网站系统的开发及维护;不断完善产品的后端设计,不断提升系统的性能、稳定性及可靠性;

3.与前端工程师配合,高效率高质量地完成接口文档编写,接口的开发工作;

4.严格遵守团队的代码格式、结构的规定,编写易读、易维护、高质量、高效率的代码。

5.积极与产品经理沟通需求。

职位要求:

1.必须有分布式项目开发经验。熟悉微服务架构体系。

2.用Spring cloud开发过商业项目。

3.精通JAVA面向对象编程,精通JAVAEE,JAVASE;

4.熟悉Spring IOC,AOP,Spring boot,Web服务器Tomcat,jetty,weblogic;

5.熟悉SQL,至少熟悉Oracle,Mysql,SQLService数据库中的一种,熟悉redis,mongoDB

6.熟练使用JAVA开发工具,精通JSP/Servlet、XML、JSON,有Socket、HTTP、Webservice相关编程经验;

7.熟练实用WEB常用框架,Spring,Spring boot,Mybatise,SpringMVC,SpringColud等;

8.熟悉前端技术:JavaScript,JQuery,ajax,常用前端框架:boostrap,VUE,easyUI

9.熟悉Linux常用指令;

10.具有良好的沟通能力及团队协作能力。

11.至少熟练一种集成开发环境,能熟练使用git等工具。

你关注的:

①小公司,但朝九晚六。

②大小周。

③法定节假日。

④每月有团建活动。

⑤五险一金。

⑥项目稳定,项目提成,最低500起。

多点直接,少点套路,多点真诚!

本文内容仅供健康科普参考,不能替代专业医疗诊断和治疗建议。如有身体不适,请及时就医并遵从医师指导。

相关阅读