本帖最后由 程有愿 于 2012-8-11 19:45 编辑
这几天写tcp的客户端和服务端,每次都是一些小问题运行不出来,自己都检测不到,到时希望各位大虾给点意见!
首先:
我自己认为了解tcp的传输方式很重要,代码很注重方法和思想,跟着思想走就不会出什么大问题了,比如,像毕老师谈到的那个并发式的客户端,从一对一的映射模式想到了
多对一的模式,当然这个也是结合到实现中的问题,同步访问的这个问题,而且在这客户端和服务端的代码编程中要解决这个问题的方法就要想到线程了,线程中我们又要如何封装客户端呢?而run方法中又该封装哪些代码呢?据我们的经验所知run方法里封装的应该是服务端要处理客户端的共性代码,所以可以讲服务端与客户端连接以后的运行代码封装在run方法中,那么在这个实现Runnable接口的类中,处了run方法外我们还需要将每个客户端加入到这个类中,以怎么样的方式加入又是一个问题,如是想到毕老师的装饰类,将类作为该类的属性传入进去最好,如是在构造函数时将一个客户端作为参数传入里面比较好,这些是浅谈方法和思想问题了
其次
是io流的问题,比如开始当毕老师说到流,源和目的时,我会想到在客户端找源,在服务端找目的,后来才知道自己愚蠢至极,因为在客户端和服务端都有自己的源和目的,所以要分清楚才是,还有就是BufferedReader和BufferedWriter,的运用还有转义字符,值得一提的是Socket里的流全都是字节流,要想提高效率就可以运用这2个流,处理BufferedWriter的时候最容易遗忘的是换行的表示和flush,所以在毕老师里使用的是PrintWriter,因为他的方法println()方法可以自动换行,可以轻松处理这个问题,还有就是毕老师里的一个标示符,可以解决循环后所要解决的内部问题,想这样的一些开发中遇到的小问题也是值得大家注意的,毕老师还有时会忘记导入包,
最后:思想 冷静 细心 耐心 是解决问题的关键! 嘿嘿 一点小想法与大家分享!!
|