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){}
}
}
二、中期——让我的聊天室有个简单界面
实现了群聊的有界面的简单聊天室,就这样出炉了。
这只是一小步,后面会持续跟进我最近在看的协议等等东西。
这仅仅是第二步,我必须说,这些代码我没有实现自己的创新和灵活运用,还停留在看胡哥的代码,模仿胡哥代码的低级水平上,没有任何的意义,这就是我不敢厚颜无耻的把大段的代码贴上来的原因
今天的这篇博客,其实我想记录一下自己最近的心情,关于技术的,关于其他乱七八糟的。
我已经很久没有过像暑假那时候为了一个程序晚上不肯睡觉的经历了,我已经很久没有自己动脑筋思考去实现自己的想法了,我一直在模仿,甚至抄袭,我不敢跟别人说我曾经做过什么项目,因为那都不是我自己的东西,说出去会觉得很心虚。最近一些感情上的琐事,还有家里面的事情搞得我很是烦躁。我不想碰代码,懒得动脑筋,思维麻痹,各种盲目的,负面的情绪笼罩着我,而我还不自知。。。。。。大学已经过去一半了,我做了什么呢。。。怀疑自己。。。又有点儿慌张。。。于是决定着手去做一个仿微信的项目,才刚刚起步,决心不能在当一个酱油了~~这次是自己真心想做的事情就不能再半途而废了~~以此来激励自己,加油
相关推荐
总体来看,"端阳怀古 棕香千里——2012年端午节ppt模板"是一个融合了传统文化、节日习俗和视觉艺术的优秀作品。它不仅仅是一个简单的ppt模板,更是一扇通往中国传统文化的窗口,让我们在享受现代科技的同时,也不忘...
对于想要全面掌握C++标准库的读者来说,这本书不仅是学习C++标准库的起点,也是一个不断回归参考的宝库。 在C++编程中,标准模板库(Standard Template Library,简称STL)是C++标准库中最为人熟知的部分。STL包含...
标题中的“电子:CES2020前瞻-5G爆发前夜,苹果时隔二十八年重回CES”指的是一份关于即将举行的国际消费类电子产品展览会(Consumer Electronics Show,简称CES)2020年的展望报告,特别强调了5G技术的发展趋势以及...
在2017年,中国的建筑建材行业迎来了一个特殊的历史节点——水泥熟料时隔15年后再次出现进口现象。这不仅仅是市场供需变化的简单体现,更是国内建材行业潜在问题的一次显性爆发。水泥熟料作为水泥生产的核心原料,其...
因老版本内容太少,兼容性差,并且因服务器出现问题而无法加载内容,于是时隔了近一年的我,在暑假拥有了自己的电脑后,开始了Android Studio的第一个项目——ALua手册重生版,以此纪念我第一个上架的App,从Lua语言...
报告标题:“电子行业深度报告:CES 2020前瞻-5G爆发前夜,苹果时隔三十年重回CES” 本报告聚焦于2020年消费电子展(Consumer Electronics Show,简称CES)的前瞻分析,特别关注了在5G技术即将大规模商用的背景下,...
emlog是国人开发的一个博客程序,功能绝不含糊,性能十分出色。与wordpress相比,更贴近国人的使用习惯,而且比wp速度快很多he。时隔半年,发布了emlog v5.0.0,该版本增加了评论嵌套,增加分类别名等功能。 ...
2016年7月全球半导体销售额时隔约3年再次实现高增幅.pdf
时隔 25 年后,一个用 AI 技术重构升级版的「大眼夹」复活了——改名叫 Copilot 的它,没有变秃,但是更强了。 美国时间 3 月 16 日早上 8 点,微软召开发布会,正式曝光由最新 AI 技术 GPT-4 加持的 Microsoft 365...
5. **MySQL**:MySQL是一个流行的关系型数据库管理系统,用于存储和管理MyBlog中的数据,如用户信息、文章内容、评论等。MySQL以其高效、稳定和易用性被广泛使用在Web应用中。 备份这个项目是为了防止未来遗忘开发...
标题“电子:CES2020前瞻-5G爆发前夜,苹果时隔二十八年重回CES”和描述“电子:CES2020前瞻-5G爆发前夜,苹果时隔二十八年重回CES”强调了2020年电子行业在消费电子展(CES)上的一些焦点趋势,其中5G技术的快速...
疫情已经过去一个多月了,在这一个多月的努力里,我们取得了很多中国第一!GitHub上也出现了很多关于此次疫情的项目,其中一位程序员在GiHub上创建了名为wuhan2020的仓库,能够在该项目上查到与疫情相关的各类最新信息,...
时隔多年 智能家居梦想再度袭来.pdf
Z-BlogPHP是一款简单,快速,高效的PHP博客程序。 Z-BlogPHP有着丰富和强大的可定制性,做为CMS系统使用,Z-BlogPHP可以更方便的管理和扩展您的网站。 非常高兴地告诉大家,时隔一年多,Z-BlogPHP 1.5终于发布了。...
竞品分析丨时隔两年,再看转转与闲鱼 本文通过市场数据表现,调研闲鱼和转转在二手交易市场中的竞争格局,所处行业地位,以及存在的差距和形成差距的原因。通过对市场背景、竞争格局分析、百度指数分析、酷传 iOS ...
Z-BlogPHP是一款简单,快速,高效的PHP博客程序。 Z-BlogPHP有着丰富和强大的可定制性,做为CMS系统使用,Z-BlogPHP可以更方便的管理和扩展您的网站。 非常高兴地告诉大家,时隔一年多,Z-BlogPHP 1.5终于发布了。 ...
时隔一年之后,英特尔于今年一月初又正式发布了第二代智能英特尔酷睿处理器家族,升级的架构以及更强劲的3D处理能力让其风头大劲。 眼见酷睿i系列处理器产品在融聚产品道路上一路领先,AMD自然不会甘拜下风,作为...
标题“20210805-广发证券-保利地产-600048-实控人时隔6年增持,公司绝对价值凸显”揭示了一个关键事件:保利地产(股票代码600048)的实际控制人在六年后的首次增持行为,这在证券市场中通常被视为对公司未来前景的...
时隔六年,Intel推出了无核显处理器,这项举措不仅标志着公司产品线的一次重大调整,也引发了关于CPU内置GPU必要性的广泛讨论。自2010年集成GPU成为处理器标配以来,Intel此次的改变犹如投石入水,激起了市场的波澜...