学习目的
1.深入网络编程的世界
2.实战:模拟聊天器(加强版)
学习过程
写一个拥有命名、私聊和群聊功能的聊天器,从中学习网络编程。
技术
我i们先来看看实现效果吧:(绿色字符为终端键入,白色字符为系统输出)
1.登录:
实现效果--jack登录 实现效果--rose登录
在客户端各自终端中键入命名,若是命名重复,则重新命名,重新登录。
2.群聊
实现效果--群聊(rose)实现效果--群聊(jack)
群聊时所有与服务器端接入的客户端均能接收到某一群聊发送者的信息,并显示命名。
3.私聊
实现效果--私聊(rose)实现效果--私聊(jack)
私聊通过指定某一个对象,向其发送信息,内容仅二人可见。
具体代码:
代码实现--客户端部分客户端首先连接上服务器端,从终端键入数据命名,输出给服务器端保存;选择操作,群聊或者私聊,键入数据给服务器端;服务器端返回其他客户端的数据给当前客户端。
代码实现--服务器端(核心)服务器端给出端口号,与客户端连接(上未给出);接收客户端传来的数据,并判断其数据的“类型”,具体执行命名、群聊和私聊操作;将数据传给客户端。
注意注意注意!!!(重要的事情说三遍!!!)
在创建输出流的时候,若是用PrintStream类,在输出数据时要注意用“println()”方法,否则输出流无法成功实现,整个程序会在此“流中断”!若是用BufferedWriter类,在输出时要注意以下三句并用:
ps.write(xxx);
ps.newLine();
ps.flush();
具体原因请移步小作“Android开发学习——Day18(网络编程&实战:模拟聊天器)”一文。否则也会造成“流中断”。
感悟
网络编程给我的感觉就是——实用,给力。在互联网发达若此的今天,更显其意义。其实网络编程的思维模式并不是很复杂,但一些项目,比如今天这个还是有些挑战性。不过想清楚过后也是能写好的。就我来说,写的时候思路还算清晰,过程也挺流畅,不过写完了却发现无论如何也实现不了效果。实话说,我有点蒙圈。。。在调试了快三个小时后,终于发现了原来是输出流的问题(如上面所述),解决了问题,之前的付出也都值得了。所以说,遇到问题和困难更是要迎难而上,因为你永远都不知道希望会不会刚好在下一秒。
网友评论