给女朋友写了个TCP聊天程序,被鄙视了!

大一的时候,我开始捣鼓用C语言做网络编程,你们知道的,就是socket、bind、listen、accpet、recv、send那一套玩意儿。

我捧着一本从图书馆借来的书,按照上面的提示,一行一行的照着敲到了电脑里,成功的写出了一个TCP的服务端和客户端,可以用来收发消息。

不过客户端和控制端都在我自己电脑上运行,自己给自己发消息,没意思。于是我把客户端发给了室友,和他可以实现跨电脑通信了。

于是就在那黑乎乎的控制台窗口上,我们聊起来了,虽然他就在我对面,虽然只是文字信息,虽然如此简陋,室友还是夸我厉害,让我充满了成就感,原来网络编程这么有意思。

成功运行以后,和室友们挑灯组队玩了几把穿越火线,高兴~

图片

第二天,我开始琢磨着,把客户端发给我远在2公里以外的女朋友,这样晚上的时候,我们在各自的宿舍就用它代替QQ来聊天,想想还挺浪漫哈~

图片

没想到当即就被鄙视了,就这黑乎乎的玩意?就不能做个漂亮的界面吗?

是啊,就这玩意确实不好见人,至少得像QQ一样,有个聊天界面,有个发送按钮,要是还能发送图片就更好了。

于是我又折腾了一个星期,用VC++ 弄了个简单的界面出来,还从网上搞了一个漂亮的皮肤加上,这下漂亮多了。

我兴奋的把程序发给女朋友,期待她投来崇拜的目光。

然鹅···

她居然在QQ上告诉我:弹了个窗口,提示连不上服务器!

图片

我服务端开着的啊?可就是死活连不上。

我迅速冷静下来,老师教过,可以用ping命令看看网络通不通。

我用QQ远程操作桌面过去,在她的电脑上ping我的电脑:

ping 192.168.1.103

哇靠!居然ping不通!

我弱弱的请教了有经验的师兄,然后又被鄙视了:你这能ping通就怪了,这是局域网地址啊!

我一脸懵逼,啥叫局域网地址?为什么就ping不通?

图片

那时的我,刚刚学了C语言,计算机网络课程才刚刚接触,用小白来形容完全不为过。

于是我开始疯狂充电,这才知道了什么叫公网地址,什么叫私有地址,知道了宿舍里的那个路由器,有一个叫NAT的功能,会将我们电脑上网的局域网私有地址偷偷改成公网地址,一出了宿舍,就是用公网地址在进行通信了。

NAT的出现缓解了IP地址不够用的问题,可以让宿舍里我们几个人共用同一个IP地址上网。

现在看来很简单的技术,但那时候不知道就是不知道啊,因此闹了笑话。

于是我在路由器上找到了WLAN口的公网IP地址,替换了客户端代码中的服务端地址,重新编译了一个包发给女朋友。

这下总该可以了吧?

然鹅,还是不行!

估计各位看到这里,心里也在说那句话:这样要是能行就怪了!

是的,虽然改成了公网地址,但还没有配置路由器做转发啊。

又折腾了半天,才学到了一个叫UPnP的东西,得去路由器上配置端口转发,将公网IP下的端口号,映射到局域网下某个地址的某个端口,这样拥有公网IP地址的路由器收到连接后才会转发到我电脑上的服务端上。

我登录到路由器后台,把我的服务端监听的端口号做了映射配置,迫不及待的让女朋友再试一次!

终于,这一次她告诉我:连上了!

终于,我给她发了第一条消息:Hello,World!

心情大好,中午加个荤菜~

图片

用IP地址来建立连接终究不是好办法,因为路由器上的公网IP经常变来变去,每次变了都得要重新编译一个客户端,可麻烦了。

要不然就每次手动输入,但我总不能留个输入框让女朋友每次都填写IP地址吧,她一定会质问我:为什么我登录QQ,人家没让我填QQ的IP地址啊?

图片

于是我又一阵搜索,了解到了可以域名代替IP的方式来解决这个问题。

程序代码中用域名替换IP,然后动态解析成IP地址,服务端的IP地址再也不用写死到代码中了。

但接着问题来了,为了这么个破玩意儿还要去注册个域名?注册域名不得还要钱吗?

公网IP经常变,是不是每次变了都得去更改这个域名映射的IP,这也还是麻烦啊!

又双叒经过一阵研究,又了解到了一个叫DDNS动态域名解析的玩意儿,一个叫花生壳的软件,下载一个客户端,把我的几个问题都安排的明明白白。

图片

自己不用注册域名,用这个花生壳下面的子域名就行,有了客户端,随时可以更改域名映射的IP地址,方便快捷。

再一次更改了我的程序,总算把这个问题解决了。

不过新的问题很快又来了,我这个程序只能服务端和客户端双方通信,要是有第三个人、第四个人要加入,这咋整呢?

继续改!

图片

说回到今天写这篇文章的主题上来。

经常有人在微信上问我:轩辕,xxx该怎么学啊?我是小白,还有机会吗?

其实吧,谁不是从小白走过来的,谁在学习的路上又没被鄙视过,没闹过笑话呢?所谓闻道有先后,术业有专攻,如是而已。

从我自己学习的经历总结来看,想要技术学的扎实,光看课程和书籍是远远不够的,得动手!

去真正动手做一些项目,遇到实际的问题时,你才知道那些各种各样的技术是什么意思,又是为解决什么问题而出现的,这比从书本上或博客里看来的要理解深刻得多。

工作几年下来发现,基础知识积累最多最快的还是上大学那几年。工作以后,像操作系统、计算机网络、数据结构与算法这些基础课程知识,日常工作中其实真正打交道的机会并不多,更多时间都是写写API接口,做下CRUD,堆一堆框架代码积木,或者学习redis、mysql、rabbitmq、elasticsearch等第三方组件的使用。

在大学期间,我大致做过以下几个项目:

  • 即时通讯软件

  • 静态Web服务器

  • 远程桌面控制软件

  • 网络流量还原软件

  • Windows内核ARK工具

虽然现在看来每一个做的都挺糙的,离实用还有不少距离,但基本功能是完成了,而且通过开发这些东西,不仅对当时的我编程能力有了不少的提升,而且在这个过程中,不断发现新的技术名词,打牢了基础,还学到了不少课本上没有的东西。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容