看代码和写代码还是很不同的

代码看懂了不难,但是简单的代码从头到尾写出来也不容易。

写个TCP服务器&客户端。是从UDP改过来的,那费老劲了。

最开始listen出错,原来SOCK_DGRAM忘记修改为SOCK_STREAM了,

接着发现listen的端口不对,原来忘记bind了,

后面发现客户端发送数据服务端接收不到,再看代码,原来都没有accept/connect。

加上accept和connect,客户端提示成功了,但是服务端没有返回,查了半天,发现客户端忘记把SOCK_DGRAM修改为SOCK_STREAM了。

太弱了。

不过最终改了,写这个简单的程序,目的是为了验证下消息分帧的特点:

消息分帧

使用消息分帧机制,就可以保护消息只在一个边界内通过socket进行通信;这意味着如果客户机向服务器先发送100个字节,然后又发送50个字节。那么服务器就会在两次读取操作中分别读取到100个字节和50个字节。UDP也是这样进行操作,这对于面向消息的协议非常有益。

与此不同,TCP是按照字节流的方式进行操作。如果没有分帧机制,一端接收到的数据可能比另外一端发送的数据多或少(这会将一次写操作划分成多次操作,或者将多次写操作合并到一个读操作中)。这种行为需要在TCP之上进行操作的面向消息的协议可以在应用层中提供数据缓冲和消息分帧机制(这可能是一项复杂的任务)。

时间: 2024-10-13 09:14:19

看代码和写代码还是很不同的的相关文章

【转载】-如何写代码-编程智慧

原文地址:http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy 编程是一种创造性的工作,是一门艺术.精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的"智慧",并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋.然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获. 反复推敲代码 既然"天才是百分

程序员除了写代码还可以做点啥

最近除了写代码,想搞点其他事情,不想生活除了写代码还是写代码,担心死的快,因为个人喜欢看电影,所以就想建个电影站,心动不如行动. 马上去买了个香港的免备案空间,并注册了个域名,下个了电影网站的cms,苹果cms,然后就上线了,发现自带的模板比较丑,就下个了模板,比较高端大气的!自己点了几下,发现模板有一些问题,花了点时间去修复了下模板,然后去采集了资源,发现如果全部采集,资源太多了,怕扛不住,就采集了部分,只想更新最新的一些资源! 上线后问题就来了,过了一两天发现百度都没收录,更可气的时好像会被

转载-如何写代码-编程智慧

http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy/编程的智慧 编程是一种创造性的工作,是一门艺术.精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋.然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获. 反复推敲代码 既然“天才是百分之一的灵感,百分之

40 岁了还在写代码,是一种幸福,还是一种悲哀?

天光,一檐停风聚天下闲士 半阁藏卷窃古今名家 马上就40了,依然在写代码,写各种代码,从C/C++写到object-c,从java写到lua,乐在其中,享受得很. 当然,我现在基本不是依靠写代码挣钱谋生,事实上,我也几乎也没有纯粹依赖过写代码谋生过.写代码只是一种乐趣,一种爱好. 当然,难道是写代码谋生就一定是痛苦的吗?也未必. 公司有两个同事,都是非常棒的程序员,也是成熟的架构师,一位是77年的,一位是78年的,他们主要的工作内容都是写代码,他们也都乐在其中,事实上,如果不出意外,他们能够在公

分享:40 岁了还在写代码,是一种幸福,还是一种悲哀?

马上就40了,依然在写代码,写各种代码,从C/C++写到object-c,从java写到lua,乐在其中,享受得很. 当然,我现在基本不是依靠写代码挣钱谋生,事实上,我也几乎也没有纯粹依赖过写代码谋生过.写代码只是一种乐趣,一种爱好. 当然,难道是写代码谋生就一定是痛苦的吗?也未必. 公司有两个同事,都是非常棒的程序员,也是成熟的架构师,一位是77年的,一位是78年的,他们主要的工作内容都是写代码,他们也都乐在其中,事实上,如果不出意外,他们能够在公司里继续留下一起合作,我想他们会一直写代码写到

jQuery之父:每天写代码

去年秋天我的支线代码项目遇到了一些问题,项目进展不足,而且我没法找到一个完成更多代码的方法. 我主要在周末进行我的支线,当然有时候也在晚上进行.这个方法对我而言效果不佳.我的压力太重了,我需要在周末努力完成尽可能多的工作(如果没做 到,我会为此感到挫败).还有一个问题是我无法保证每个周末都有空,而且我也不想把周末所有的时间都花在编程上(失去一切放松娱乐的机会). 此外,每隔一周进行编码的话,间隙太长了.太容易忘记你正在做什么,或者你还需要做什么了(即使你有笔记).如果你错过了一个周末的话,问题就

究竟要不要写代码注释?

看完上图你是什么反应?会骂人吗?会就对了--,代码整洁之道,是一条很漫长的路,注释是其中一部分. 如果是一个很大的方法,要不要加注释?一个大方法按照它的功能被分割成几个小方法,这样代码就比较容易阅读了,但有的童鞋说能在项目的deadline里面搞出来就行了,哪有时间整理这种大方法?为了让你的搭档或者接手者,更轻松的理解,让她/他少加班,抽时间还是整理一下吧.按照树的结构,一个主干,其他分支都是处理不同的逻辑. 如果是小方法能做到见名知意,就一定要见名知意,习惯总是要培养的,接一句鸡汤:走得慢并不

写代码,更需要设计代码

迭代是代码最终能成功发布的关键.因为没有人第一次写程序就能搞定,任何人都不行.如果有人说他是例外,那么——我敢说他在撒谎.我们可以从错误中学习和进步.我从来不会在第一次尝试的时候就去优化代码.第一次尝试是迭代的原型,通过一次次迭代最终出来一个完美的产品. 三思而后行 如果有人使用的不是工程学术语来定义他们编写代码的过程,我的脑子里会自动脑补出一幅他们在拼命将一个球体塞入三角形的洞里的情景.编程对我而言是一种爱好.我沉迷于我的爱好,并且还能拿薪水,所以我一直以来都竭尽全力并且以此为荣.所以请原谅我

苹果发布新一代编程语言Swift,边写代码边看结果,Apple Swift 简介

每年进入夏至前一个月,便是各高校毕业生的忙碌的季节-毕业论文,经非权威的调查显示,有近百分之九十的学生不到三十天就完成了论文的写作,更有百分之四十五的人不到十天就完成了毕业论文的写作,由此声音:这毕业论文在这么短的时间内完成质量高吗?对毕业后的工作有大的价值吗,工作单位会在乎毕业论文的质量吗? 因此得观点:毕业论文要不要写? 对于很多即将毕业的同学来说,毕业论文做的好与坏结果都是同样的毕业证,实在没有必要花太多的精力,通过万岁,一切只是为了顺利毕业."如果毕业论文不是跟学位证挂钩的话,我想以大多