网络通信项目总结之一

      与其说是项目总结,到不如说是反思总结。总结这类东西,必须有感,真情实感,不管是项目总结还是反思总结,亦或是学习总结,工作总结等等。亲身经历,有感而发才行,写总结应如写随笔,随意而不可随便,笔随心动,心到笔随,这是我对随笔这一文体的精髓总结。我想借用来描述总结的精髓,也不为过吧。     

      学习通信阶段也有十天了,本来说是两三天一总结,可到现在一篇都没写,实在是有些惭愧啊。迟迟未写总结,说来原因也很简单,自然有没时间之类的借口,但是关键还是对技术的了解和掌握不够,就是我前面所说的感不够。话说很多理科生在逻辑分析上占优,在表达上却不及文科生。包括口头表达和文字表达。所以更是要加强这方面的训练。像演讲,总结报告等都是很好的锻炼形式。不敢说我的表达能力有多强,起码能让别人明白我的意思。另一方面,其实想说我还是有点文科生的潜质的。诗词歌赋都难不倒我,却偏偏被几行代码搞懵了。

      前面两段算是发点小小的感慨,技术博客,总归是要讲点与技术相关的东西,下面就简单总结一下这些天来对通信这一块的理解和感悟。虽说基本是抄书上的代码,但收获总是有的,所谓“熟读唐诗三百首,不会作诗也会吟”嘛,自己写固然重要,但是不会的时候也需要借鉴,个人认为,抄代码能是能变技术牛人的,只是抄的不够罢了,要能抄个几十万几百万行的代码,那么厚积薄发,你自己写代码的水平也会有很大的提高。但是,抄的再多,终究还是要自己会写才行。

      网络通信,我们通常想到的是QQ,飞信,MSN等等,而我们现在要做的,只是一个初步的聊天工具。说起来,这部分的新内容也不是很多,最主要的就是一个Socket类的使用。

基本流程:第一步是创建一个java.net.ServerSocket对象,即服务器,代码如下

ServerSocket server = new ServerSocket(9090);

第二步等待客户机来连接,客户机进入后,生成一个Socket对象。服务器对象有个accept()的方法,这个方法是阻塞的,直到有一个客户机对象连接上来,才会返回一个Socket对象。

java.net.Socket client = server.accept();

第三步是从Socket连接对象上调用方法得到输入输出流。

java.net.Socket client = server.accept();

OutputStream out = client.getOutputStream();

InputStream ins = client.getInputStream();

第四步就是使用输入输出流对象进行通信数据的读写:从输入流中读取数据,向输出流中写入数据。读到的数据,即是客户机发来的数据;写出的数据,就会发送给客户机!代码如下:

String s = "你好!\r\n";

byte[] data = s.getBytes();

out.write(data);

out.flush();

client.close();

第五步,将代码完整的集成起来,就可以调试了。打开命令行,执行telnet命令,本地IP可以用localhost代替,完整的输入即为C:\>telnet localhost 9090。这样就实现了最基本的网络通信。当然这是最简单的版本,后续的还有更多改进的地方。

猜你喜欢

转载自826133649-qq-com.iteye.com/blog/1137587