| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5367 人关注过本帖, 1 人收藏
标题:小鱼儿--控制台p2p聊天工具(里面)
只看楼主 加入收藏
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
以下是引用waterstar在2011-12-13 17:45:09的发言:

简单的socket通信,基本上每一本讲网络编程的书都会提到这种例子。

小鱼儿兄,给你提点建议,你在编代码的时候多敲点空格,比如说SOCKET     sClient = accept (sListen, (sockaddr * )&client, &addrlen);不然代码看起来太费劲。
恩,谢谢。
记住了,话说字写的丑的人,他的代码也不好看看。
嘿嘿,我的字超丑

用心做一件事情就这么简单
2011-12-13 20:07
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
以下是引用TonyDeng在2011-12-13 18:34:53的发言:

通讯无它的,就是一台机的信息能够到达另一台机而已。首先是信息如何传送的问题,有线抑或无线,存粹电子技术线路问题,此为TCP/IP协议的第一层,是实体层。如果工作需要,是嵌入式操控实体的,编程就只能在这个层面上进行。单机与单机、PC与单片机等等,都不指望带有复杂的中介层面软件,多数是直接通讯,比如用串行电缆连接是最原始的。这种现实,不存在什么IP地址的概念,编程时也不过是双方不断监视通讯端口的数据而已,只要做到不遗漏、没错失数据,就能建立稳定的应答关系。实时监视端口数据是通讯,非实时读写磁盘文件也是通讯,手段多种多样。编程的,无非是考虑如何达成目的,建立通讯协议(未必要遵循通行的协议,可以是双方独特的),是采用有保障有状态的通讯模式,还是采用发了就算不管对方是否收到的模式,都有不同的编程方式。了解存在这么些问题是需要考虑的,比什么都重要,拿人家现成的模块,我们没办法知道它到底基于什么、内里做了什么,那是很皮毛的。要想精通编程,这个才是重点,语言只是浮云。

现在万维网上的页面编程,无状态模式就够折磨人,迟早要被替换掉的。
恩,谢谢。。。
我们没办法知道它到底基于什么、内里做了什么,那是很皮毛的。要想精通编程,这个才是重点,语言只是浮云。记住了这句话了


用心做一件事情就这么简单
2011-12-13 20:09
yuboyu
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-12-13
收藏
得分:0 
不错不错
2011-12-13 21:11
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 9楼 TonyDeng
我觉得学习算法(数据结构)和学习底层(与硬件协议等相关)是两个不同的方向,不过我们所说的精通是指对底层知识的了解,毕竟算法可以用各种语言实现。
不知道我这样的理解对不对?

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-12-13 22:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我举协议的例子,不是说底层,而是说哪些东西是要重点思考的:到底是一发一答确认无误再继续,还是闷头发过去不管对方是否收到,是实时应答,还是容许延迟,等等问题,是具体我们做通讯程序时一定要优先决策的,是这些需求决定了后续的技术实现,而不是以我们有什么技术能力来反决定需求。有没有想到这方面的问题,并在程序设计中留有余地,给出可修改的空间,而不至于一旦需求变化则被迫完全推倒重来,这才是程序员水平高低的评价标准。把程序做死了,谁都会做,但活的程序就难了。

狭义的算法,是解决某个具体问题时可以套用的一种方法(套路),但知道问题是否确实归结到能用这个算法解决,却不是我们只懂算法就能够办到的,那本质上是我们对问题本身的理解深度问题,对问题不理解,通晓所有算法都没用,因为不知道该套哪个公式(回忆读书阶段很多人不懂解题的过程,就知道他们其实不是不懂运算,而是根本不知道问题该套哪个公式,尽管那公式不过是加减乘除那么简单,也一样没辙,这种事见得多了)。其次,现实很多问题是在算法之外的,算法如果万能,这世界根本就不会有问题有待解决,也轮不到你来解决,正因为并非如此,我们才有存在的必要。

授人以渔,不授人以鱼。
2011-12-13 22:25
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
收藏
得分:0 
晕了。。。。那我现在刚初步了解C语言的应该重点学些什么

何必等待?梦在今朝
2011-12-13 22:27
零波丽
Rank: 3Rank: 3
来 自:莉莉斯
等 级:论坛游侠
帖 子:222
专家分:107
注 册:2011-9-8
收藏
得分:0 
回复 15楼 TonyDeng
TonyDeng兄~
突然不知道我该学什么 感觉 C学的 差不多了 不是说好 而是 可以学习别的 我觉得 后面的 是不是 必须 实践才能进步了呢?
我是否应该学习一个别的东西 比如 SQL?

人又是什么?神造出来的东西。 人是人造出来的东西。
2011-12-13 22:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
学编程和学某门语言是两个不同的概念。立志做程序员,首先是学编程,那是一种思维能力和技能,通用的,任何编程语言都管用。但编程能力不可能凭空,必须通过某门语言表达,此时才是学语言。有些人本身已经是资深程序员,只是刚接触某门语言,那么他就会说学语法很重要,但若是连编程都是初学的,就不能把重点放在语法上了(也就是说以人家的基础那样说是对的,但你自己的基础未必跟人一样,就不要道听途说),那样反而会舍本逐末,被语言的细枝末节吸引,埋头死钻,而忽略了从更高的层次领悟编程之道。比如,链表这样的东西,其实对大多数编程语言来说,都不过是一种现成的模型(即使是现在的C++它也成了标准库提供的东西),初学编程,重点应放在什么问题、什么时候应该运用链表这种数据结构来解决,而不是去学习如何构造链表的增、删、改、排序之类算法,只需要知道链表这个东西该怎么用就可以了,因为那是现成的工具。学编程,重点是如何解决各种各样的现实中最经常碰到的问题,先做熟练技工,能独立操作机床,而不是去学如何设计和制造机床。随着实践经验的积累,慢慢就能领悟到设计之道,那个时候,才有资格理解链表为什么要这样设计,是什么原因促使这种数据结构出现,而平时的经验已经给了你充分的例子,反过来就能更好地应用于实践,不至于张冠李戴套错模型。

C语言正是把细节落到最底层的编程语言,对资深程序员来说,它当然是利器,但不是初学编程者能用的。李小龙挥舞双截棍威力无穷,而且也能解释得通双截棍为什么有那么大的威力,但你也去舞,能打得过谁?须知自己是一个连对方出招有什么征兆都不知道的人,纵使拿着手枪,也只有被抢的份。总之,我还是那句老话,初学编程的人学C,是很危险的事,往往半途而废,因为那些知识,超过大半是根本不知道用在何处的。特别是看到那些说指针能解决啥啥啥问题的,就觉得好笑——如果只有指针能解决问题,别的大多数语言会那么尽力回避它?连C++都要用迭代器概念来取代指针,可想而知指针有多危险,不是给初学者用的。只要初学者一沾这方面,所遇到的巨大困难很容易就把他们吓退,从此不碰编程,他觉得没指望,别想成高手了。

看看那几个问联合体的问题就知道了。联合体,书上是有讲,但这种东西在什么地方会用到?你知道吗?遇到什么问题你会想起这样用可以较方便?你连这种需求都没碰到过,现在来钻它的问题,讲了能理解吗?那算理解吗?这样考试过关了就等于懂编程了吗?多少人在追求深入的书,但最深入的东西其实就是最初就接触过的基础知识,到最后才明白自己原来一直不知道那个用了无数遍的东西居然有如此深奥的内涵。没有实践,看什么秘笈、高手指南,都是多余的。

我曾跟很多人说过,“力学”这门课程的核心概念“力”,其实是最搞不清楚的概念,恰恰现代力学理论体系中,视“力”仅为中介理念,既不是实在,也不需要出现,它的唯一作用,不过是构造某些定律公式。甚至在现代物理学中,连“质量”的概念都没有确切定义。可见最深奥处其实就在最浅显处,这是真理。凡是求深的,实际上是没入门。

[ 本帖最后由 TonyDeng 于 2011-12-13 23:25 编辑 ]

授人以渔,不授人以鱼。
2011-12-13 22:58
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
以下是引用TonyDeng在2011-12-13 22:58:32的发言:

学编程和学某门语言是两个不同的概念。立志做程序员,首先是学编程,那是一种思维能力和技能,通用的,任何编程语言都管用。但编程能力不可能凭空,必须通过某门语言表达,此时才是学语言。有些人本身已经是资深程序员,只是刚接触某门语言,那么他就会说学语法很重要,但若是连编程都是初学的,就不能把重点放在语法上了(也就是说以人家的基础那样说是对的,但你自己的基础未必跟人一样,就不要道听途说),那样反而会舍本逐末,被语言的细枝末节吸引,埋头死钻,而忽略了从更高的层次领悟编程之道。比如,链表这样的东西,其实对大多数编程语言来说,都不过是一种现成的模型(即使是现在的C++它也成了标准库提供的东西),初学编程,重点应放在什么问题、什么时候应该运用链表这种数据结构来解决,而不是去学习如何构造链表的增、删、改、排序之类算法,只需要知道链表这个东西该怎么用就可以了,因为那是现成的工具。学编程,重点是如何解决各种各样的现实中最经常碰到的问题,先做熟练技工,能独立操作机床,而不是去学如何设计和制造机床。随着实践经验的积累,慢慢就能领悟到设计之道,那个时候,才有资格理解链表为什么要这样设计,是什么原因促使这种数据结构出现,而平时的经验已经给了你充分的例子,反过来就能更好地应用于实践,不至于张冠李戴套错模型。

C语言正是把细节落到最底层的编程语言,对资深程序员来说,它当然是利器,但不是初学编程者能用的。李小龙挥舞双截棍威力无穷,而且也能解释得通双截棍为什么有那么大的威力,但你也去舞,能打得过谁?须知自己是一个连对方出招有什么征兆都不知道的人,纵使拿着手枪,也只有被抢的份。总之,我还是那句老话,初学编程的人学C,是很危险的事,往往半途而废,因为那些知识,超过大半是根本不知道用在何处的。特别是看到那些说指针能解决啥啥啥问题的,就觉得好笑——如果只有指针能解决问题,别的大多数语言会那么尽力回避它?连C++都要用迭代器概念来取代指针,可想而知指针有多危险,不是给初学者用的。只要初学者一沾这方面,所遇到的巨大困难很容易就把他们吓退,从此不碰编程,他觉得没指望,别想成高手了。

看看那几个问联合体的问题就知道了。联合体,书上是有讲,但这种东西在什么地方会用到?你知道吗?遇到什么问题你会想起这样用可以较方便?你连这种需求都没碰到过,现在来钻它的问题,讲了能理解吗?那算理解吗?这样考试过关了就等于懂编程了吗?多少人在追求深入的书,但最深入的东西其实就是最初就接触过的基础知识,到最后才明白自己原来一直不知道那个用了无数遍的东西居然有如此深奥的内涵。没有实践,看什么秘笈、高手指南,都是多余的。

我曾跟很多人说过,“力学”这门课程的核心概念“力”,其实是最搞不清楚的概念,恰恰现代力学理论体系中,视“力”仅为中介理念,既不是实在,也不需要出现,它的唯一作用,不过是构造某些定律公式。甚至在现代物理学中,连“质量”的概念都没有确切定义。可见最深奥处其实就在最浅显处,这是真理。凡是求深的,实际上是没入门。
先赞一个,其实高度也只有在你写过了很多东西,你才会发现你以前的肤浅。所以初学者没有学习一段,实践一段是不可能站的很高的高度。。对应初学者肯定先把基础学好再说有些东西本身是对的,但只有经历了一些东西之后 我们才会认为是对。我开始学学习链表的时候,没有明白它的用处,没有明白它的原理,而记住书上的模式,一到我要用他的时候,就出现错误。后来hellovfp带我写一个项目的时候,我才发现链表有那么好,要是我用数组写起来很麻烦,而且不容易整理维护自己的代码。也冲他代码里面学到链表原理。。后面就认识到数据结构重要性,以前都是听说很重要,我老师也经常说。我自己那时候学着用c写游戏,写一些小东西。我就纳闷了,根本那些数据结构就不用到,何必要学啊。。。。后来才发现自己太肤浅了。。。数据结构能够是你的程序更加清晰,是你代码简洁。而且有时候能够减少你的算法的难度。。。。但要是我没有和hellovfp写那个程序,我不知道要什么时候认识那点。所以一些东西只有经历才会认识到。只有自己错过才会认识更深刻。。。不然别人怎么说都是废话。

用心做一件事情就这么简单
2011-12-14 00:43
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 18楼 TonyDeng
学到了。
我们学的任何东西归根到底就是要去解决问题,不能解决问题的方法就是空中楼阁。当初我刚开始看数据结构的时候,曾经一度认为那东西很无聊,也不知道要用到什么地方去,虽然能理解,但很难坚持下去,中途中断了好几次才把它看完。如果当时能有个什么用到数据结构的项目做做,那就不一样了,至少有目标了,学习起来不会迷茫。不过在学算法的时候(我说的是狭义上的算法,前人总结出来的经典),因为可以做题,有了解决问题的目标之后,学习起来就安心多了,也没有中断。所以我就想,要用到什么知识再去学什么知识,有目标和没目标绝对是一个大差距,到后来会发现其实自己并没有少学什么,相反,反而学了更多东西,而且更加印象深刻。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-12-14 08:35
快速回复:小鱼儿--控制台p2p聊天工具(里面)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016407 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved