2014年3月26日的凌晨,我终于开始零零碎碎的写时隔几个月以后的第一篇博客。说来惭愧,荒废了许久的博客,重新打开看着上一篇博客的日期,回想自己这一段时间在技术上的空白期,心里有点堵。酝酿了很多天,却没能酝酿出一篇惊天地泣鬼神的好技术文章,说起技术,我真的是很渣很渣,所以下面还是谈一下这一段时间在通信这方面取得的进展吧。</p>
一、前期——实现服务器,多客户端,及其连接</strong></span></p>
从一个最简单的只能发送欢迎信息的服务器开始,一步步实现到了多客户端,用到了许多以前的知识,包括线程等,还有全新的知识,比如数据库,我承认这确实照着胡哥的抄的,确实没有创新。。。我想说的是在这些过程中我遇到的问题:
第一个,客户端服务器连接问题。我非常大胆的用自己的客户端连自己的服务器了。。。所以出现了
这个问题完全是因为我没有细心的检查,服务器的IP地址跟客户端连接的不一样</p>
第二个问题,服务器进入死循环。</p>
这个是什么问题呢?我找啊找,找啊找,找到头发都白了,才发现
这一条语句,还有后面的password都是+了“\r\n”的,实际上并不需要它,当我每次输入完毕以后,再次点击回车的时候,就会出现进入死循环的现象,胡哥的代码中特别标注了要加上\r\n,我不知道为什么会跟我写的出现冲突
代码不详细的进行说明了,下面是核心的代码,服务器线程的实现。
package NPlayerChat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
public class ServerThread extends Thread {
private Socket client;
private OutputStream ous;
private UserInfo user;
public ServerThread(Socket cl){
client=cl;
}
public void run()
{
processSocket();
}
public UserInfo getOwerUser() {
// TODO Auto-generated method stub
return this.user;
}
//读取客户机消息的方法
private void processSocket() {
try {
InputStream ins=client.getInputStream();
ous=client.getOutputStream();
BufferedReader brd= new BufferedReader(new InputStreamReader(ins));
sendMsg2Me(" 你好,欢迎来到三水聊天室~~\r\n\r\n\r\n"+
" ************************************\r\n"+
" * To live is to change the world *\r\n"+
" * *\r\n"+
" * ——Jobs *\r\n"+
" ************************************\r\n请输入用户名:" );
String userName=brd.readLine();
sendMsg2Me(userName+",请输入你的密码:");
String pwd=brd.readLine();
user=new UserInfo();
user.setName(userName);
user.setPassword(pwd);
//调用数据库模块,验证用户是否存在
if(!DaoTools.checkLogin(user)){//不存在这个用户账号则关闭
this.closeMe();
return ;
}
ChatTools.addClient(this);
String input=brd.readLine();
while(!input.equals("bye")){
//读到消息后就发送给其他客户机
ChatTools.castMsg(this.user,input);
input=brd.readLine();//向下读取
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ChatTools.castMsg(this.user, "我下线了,再见!!");
this.closeMe();//调用服务器管理方法
}
//关闭线程
private void closeMe() {
try {
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//将一条消息发送给这个线程对象所代表的客户机, 传入前,不需要加上\r\n,
public void sendMsg2Me(String msg) {
try{
msg+="\r\n";
ous.write(msg.getBytes());
ous.flush();
}catch(Exception ef){}
}
}
二、中期——让我的聊天室有个简单界面
实现了群聊的有界面的简单聊天室,就这样出炉了。
这只是一小步,后面会持续跟进我最近在看的协议等等东西。
这仅仅是第二步,我必须说,这些代码我没有实现自己的创新和灵活运用,还停留在看胡哥的代码,模仿胡哥代码的低级水平上,没有任何的意义,这就是我不敢厚颜无耻的把大段的代码贴上来的原因
今天的这篇博客,其实我想记录一下自己最近的心情,关于技术的,关于其他乱七八糟的。
我已经很久没有过像暑假那时候为了一个程序晚上不肯睡觉的经历了,我已经很久没有自己动脑筋思考去实现自己的想法了,我一直在模仿,甚至抄袭,我不敢跟别人说我曾经做过什么项目,因为那都不是我自己的东西,说出去会觉得很心虚。最近一些感情上的琐事,还有家里面的事情搞得我很是烦躁。我不想碰代码,懒得动脑筋,思维麻痹,各种盲目的,负面的情绪笼罩着我,而我还不自知。。。。。。大学已经过去一半了,我做了什么呢。。。怀疑自己。。。又有点儿慌张。。。于是决定着手去做一个仿微信的项目,才刚刚起步,决心不能在当一个酱油了~~这次是自己真心想做的事情就不能再半途而废了~~以此来激励自己,加油
相关推荐
C++标准库——自学教程与参考手册,是C++标准版的圣经,现在时隔10年第二版出来了
0.写在前面时隔半年,我们中国人民大学数据挖掘中心整理以往提供的 linux 教程以及学生们在实际使用 linux 中获得的经验与教训,发布了全新的基于 ubu
因老版本内容太少,兼容性差,并且因服务器出现问题而无法加载内容,于是时隔了近一年的我,在暑假拥有了自己的电脑后,开始了Android Studio的第一个项目——ALua手册重生版,以此纪念我第一个上架的App,从Lua语言...
emlog是国人开发的一个博客程序,功能绝不含糊,性能十分出色。与wordpress相比,更贴近国人的使用习惯,而且比wp速度快很多he。时隔半年,发布了emlog v5.0.0,该版本增加了评论嵌套,增加分类别名等功能。 ...
2016年7月全球半导体销售额时隔约3年再次实现高增幅.pdf
时隔 25 年后,一个用 AI 技术重构升级版的「大眼夹」复活了——改名叫 Copilot 的它,没有变秃,但是更强了。 美国时间 3 月 16 日早上 8 点,微软召开发布会,正式曝光由最新 AI 技术 GPT-4 加持的 Microsoft 365...
疫情已经过去一个多月了,在这一个多月的努力里,我们取得了很多中国第一!GitHub上也出现了很多关于此次疫情的项目,其中一位程序员在GiHub上创建了名为wuhan2020的仓库,能够在该项目上查到与疫情相关的各类最新信息,...
时隔多年 智能家居梦想再度袭来.pdf
时隔六年,Intel再推无核显处理器.pdf
3.第一个python程序 — 需要记事本||cmd{比较恶心} 4.python的变量 变量数据类型 用户交互 流程控制(if) 5.输入输出 python的创始人吉多.范罗.苏姆。1989年的圣诞节期间,吉多.范罗.苏姆为了在阿姆斯特丹打发时间...
时隔七年SDP2.0重磅发布 抢先预览2.0带来哪些变化.pdf
建筑建材行业日报:水泥熟料时隔15年再现进口.pdf
银行业日报:央行时隔16日重启逆回购操作.pdf
竞品分析丨时隔两年,再看转转与闲鱼.pdf
Z-BlogPHP是一款简单,快速,高效的PHP博客程序。 Z-BlogPHP有着丰富和强大的可定制性,做为CMS系统使用,Z-BlogPHP可以更方便的管理和扩展您的网站。 非常高兴地告诉大家,时隔一年多,Z-BlogPHP 1.5终于发布了。...
Z-BlogPHP是一款简单,快速,高效的PHP博客程序。 Z-BlogPHP有着丰富和强大的可定制性,做为CMS系统使用,Z-BlogPHP可以更方便的管理和扩展您的网站。 非常高兴地告诉大家,时隔一年多,Z-BlogPHP 1.5终于发布了。 ...
时隔一年之后,英特尔于今年一月初又正式发布了第二代智能英特尔酷睿处理器家族,升级的架构以及更强劲的3D处理能力让其风头大劲。 眼见酷睿i系列处理器产品在融聚产品道路上一路领先,AMD自然不会甘拜下风,作为...
银行业日报:资金面趋紧,央行时隔12日重启逆回购.pdf
公用事业行业研究周报:时隔八年,集中式光伏电站建设新指引.pdf