通过4天时间在蓝杰的学习,我实现了通信项目一对一聊天与多人聊天的基本功能。
将我的学习过程按照时间来分,共可分为4部分:
一、14.07.12 完成创建服务器,并发送一条消息
遇到问题:
Eclipse-console:
java.net.BindException: Address already in use: JVM_Bind
原因:端口已经被使用了。port端口号 0-65535 ,注意1~1024端口是知名端口,不要轻易使用,比如80端口是用于打开网页。连续编译两次也会报出相同的异常,把关闭客户端与关闭服务器的概念弄混了,在程序中没有关闭服务器,只关闭了客户端。关闭客户端使用的是“Socket.close();”,关闭服务器使用的是“System.exit();”。这里要感谢我在蓝杰的同学潘立泽,是他帮我解决的问题。
解决办法:可以使用CMD命令netstat -an 方法查看端口是否被使用
二、14.07.13 实现了单个客户与服务器之间交流
三、14.07.14 实现了多个客户与服务器之间的交流,通过线程
四、14.07.15 实现了多人聊天室的交流功能
遇到问题:
Eclipse-console:
java.net.SocketException: Software caused connection abort: socket write error
服务器收到的是:null
CMD:
user2说的是:null
user2说的是:null
user2说的是:null
user2说的是:null
以上重复
原因:没有按照程序中规定的退出方法,直接关闭了CMD界面,导致的异常。在写程序的时候,没有想到应对该种情况,从而导致异常。
解决方法:1、规范用户退出的方法,可以增加输出语句告知用户应当如何退出;2、在程序中添加新的检测方法,若用户直接退出,则将该线程引导到规定退出的方法上来,即当服务器收到null后,将该用户直接规范退出
遇到问题:
Eclipse-console:
useri?1 用户不存在
用户不存在,关闭
java.net.SocketException: socket closed
原因:记错用户名和密码,导致无法进入。另外,通过CMD命令进入服务器后,账号密码输入错误修改后显示的账号密码不一样,删除键在CMD命令中也是一个特殊的字符,因此会在console下输出一个“?”,在修改用户名的时候不能输错,否则就需要重新输入
解决办法:暂时先好好记住用户名的账号和密码不要输错吧,我再找找资料或者找人问问
这几天的学习,我觉得写程序要有充足的时(少)间(玩)分(游)配(戏)、良好的书(注)写(释)习(输)惯(出)还有一群靠得住的队友。
首先,充足的时间。时间这种东西,稍微一不注意就浪费过去了,但是写代码就是需要时间来一点一点的堆积的东西。所谓量变引发的质变,只有足够的数量堆积,才能完成一个程序,好坏不说,最起码的基础功能总要慢慢的添加进去的。玩游戏,是必须的,但是要掌握一个度。光玩,不做事,那是傻子;光做事,不玩,那是书呆子。
之后,良好的习惯。我最高兴的就是我在写代码的习惯上还可以其中的典型就是注释和测试语句,没事就把一些变量输出一下,或者到了某一步汇报一下这一步是做什么用的。写完程序之后,测试方便很多。当然,这也是因为我的程序里总是会有一些漏洞的。
最后,靠得住的队友。一群靠得住的队友,不是他们可以帮你把代码写完(那是你自己的任务),不是他们会来教你怎么写(当然你可以主动去问啊),不是他们来催你写代码(我靠,自己安排时间了,又不是小学生)。而是,他们可以给你营造一种良好的氛围(人家都在学,你不学,那么去那里做什么啊),他们可以给你制造一定的精神压力(周围都是大神,好歹你要能够加入到他们的话题中吧),他们可以在你遇到困难的时候跟你一起解决(大家一起找问题,就显得你的智商不是那么低了,你懂的)。
分享到:
相关推荐
完整版java基础入门教程由浅入深讲解 Java语言编程基础 第14章 网络通信(共76页).ppt 完整版java基础入门教程由浅入深讲解 Java语言编程基础 第15章 数据库访问(共51页).ppt Java技术与应用 (共32页).ppt Java...
本课题是应用了计算机网络通信技术和JAVA网络编程的基础知识,以JAVA为平台,利用Eclipse开发工具,并使用SQL Server 2000管理数据库数据开发出的基于Socket的网络即时通信系统。(论文+源代码+开题报告)
实用线程+循环完成了客户端与服务端的简单通信(服务端为本机),服务器端可以向客户端发送消息,客户端也可以向服务器端发送消息。你一句我一句实现对话,通过检测内容是否为OVER结束对话。
java通信socket入门实例,一个完整的socket通信的demo,根据网上实例改写的
flex与java通信 入门级别
用java编写的nio通信的例子,nio是io编程的新版本,比io较流行。同时本例子是适用socket通信的。可以在此基础上,添加您的个人应用。本例子适用于:java通信的学习者,android平台通信的学习者。
【完整课程列表】 Java语言基础 Java网络编程技术 Java程序设计使用教程 第01章 java语言概述(共43页).ppt ...Java语言基础 Java网络编程技术 Java程序设计使用教程 第10章 网络通信(共53页).ppt
本课题是应用了计算机网络通信技术和JAVA网络编程的基础知识,以JAVA为平台,利用Eclipse开发工具,并使用SQL Server 2000管理数据库数据开发出的基于Socket的网络即时通信系统。系统采用客户机/服务器(C/S)的模式...
一本很值得看的Java学习入门手册,经典珍藏。
基于Java+机器学习的糖尿病预测系统源码.zip基于Java+机器学习的糖尿病预测系统源码.zip基于Java+机器学习的糖尿病预测系统源码.zip基于Java+机器学习的糖尿病预测系统源码.zip基于Java+机器学习的糖尿病预测系统...
最基础的java socket通信,客户端服务端之间传送javabean对象
Java学习更是如此,知识点总结目录如下: 目录 一、 Java概述 3 二、 Java语法基础 5 数据类型 5 运算符号 14 语句 15 函数 15 方法重载(Overloadjing)与重写(Overriding) 16 数组 17 总结 18 三、 常见关键字 ...
一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 ...
一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 ...
Java学习,为Java学习者提供的学习文档,java基础,网络通信
计算机软件及应用移动通信软件编程基础JAVA语言PPT学习教案.pptx
java线程 线程 教程 java线程教程 java线程学习资料 本教程有什么内容? 本教程研究了线程的基础知识— 线程是什么、线程为什么有用以及怎么开始编写使用线程的简单 程序。 我们还将研究更复杂的、使用线程的应用...
第一部分 数字通信基本原理 1 一.数字通信系统 1 ㈠信号 1 ㈡数字系统 1 ㈢数字通信的主要特点 2 二.语音信号的数字化 2 ㈠取样──信号在时间上的离散化 3 ㈡量化──信号在幅值上的离散化 3 a.线性量化 4 b. 非...