对TCP/socket编程的个人理解

在最近的物联网项目中打交道最多的就是socket了,我从来没有在最近的博文中提到关于最近做的这个项目的详细情况,今天就说一下,这是一个和智能家居类似的物联网项目,不过应用物联网的场景是办公室,所以叫法是智慧办公室,大致的功能有:查看办公室的环境信息比如温湿度,PM2.5,噪声强度,光照强度,人员的在勤或者缺勤状态,可以在手机上看也可以在桌面客户端看,客户端联网之后可以实时的控制办公室内的灯光和门窗状态,随意地开启某台电灯或者进行开门关窗动作等等,还有各种自动模式暂不细说,主要谈一下最近在项目的网络连接方面所做的工作以及体会。

socket在英文中的意思是插头、插座等等,TCP协议与http协议相比麻烦之处在于TCP是借助于socket建立了一个可靠的点对点通信,像一个通道一样,你可以在程序中随时关闭这个通道以实现连接的灵活开启和关闭,在使用的时候,你首先要在服务器端新建一个socket(类比插座),然后填写这个插座的信息,绑定在哪个主机(用IP地址唯一标示网络中的一台主机),绑定主机的哪个端口,使用的哪种连接协议等等,然后这个socket就有了丰富的内容(信息都保存在一个结构体中),接着就是用客户端的socket(插头)来连接服务器的这个socket(插座),那么客户端的这个socket同样要知道自己要连哪个socket(插座),就要在客户端的socket(插头)中指定要连接的IP地址和端口号,那么在这样建立可靠连接之后就可以双方通信了,当然我说的只是大概,具体的连接程序还有一些小的步骤,不过只要理解了我说的,做起来就不难,主要能理解TCP协议的内容,那么无论什么语言什么环境,通信起来就会非常简单,都是建立在socket上的。

但是为什么我能在这种项目中使用面向连接的TCP协议而不是用简单的上层协议HTTP呢,因为在数据量大,传送频繁的时候,TCP协议的短板很多,但是我们的项目传送的只是简单的指令,指令字符串顶多几十个字节,所以我才用了TCP协议,其实还有个原因就是笔者对http协议的了解不如TCP协议,故就用了自己熟悉的东西,还有就是因为涉及到自动控制指令的发送,指令也不长,所以笔者认为,用TCP协议来写这个项目还是挺合适的,也实现了想要的功能,但是socket如果一直打开,不仅仅是占用端口,占用服务器资源,还会带来很多意想不到的麻烦,所以我在我的程序中基本上都是按需申请调用,最后用完释放,最多运行一个,这样简化了处理逻辑,也让代码看起来没那么臃肿。

希望有对网络协议有更深层理解的大神拍砖指正,笔者仍然是学生党,还有许多要学习的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值