java qq通信_结对博客(Java通信项目QQ)

项目名称:JAVA通信项目——QQ

成员:邢正,郑振兰

项目需求:QQ每个人都用过,它的意义就不再讲了。之所以选择做QQ事因为它有挑战性,涉及到通信、传输、swing等各种知识。(好吧我不装逼了,说的直白点,代码量大,如果写五子棋贪吃蛇之类的绝对写不到500行)

首先整个项目分为两部分:客户端和服务器。客户端要完成的功能就是界面(主界面,好友列表,聊天界面)以及登录、聊天功能。服务器作为后台,负责通信连接。做项目时逻辑一定要清楚,类与类包与包之间的逻辑关系以及分层一定要明白

代码截图:

38d7339bce629f31eeb8285a32177dc3.png

1d600bc72d835401a5d653945061aa69.png

0d57e3f1a298b583e1f6ffe6e43d9344.png

435f9bd5eec8c4f1e61e4c2ccca87662.png

f8e09d176c46fbd1cb9308e31f80f2f1.png

517e1430382d1c197e5e21df2be0f551.png

70b06faeece637aa391b7fcae56f04b8.png

540f95356395494646f583686fd108ff.png

42d94deba909c9a16ac567ad97ad510c.png

因为没用数据库也没有用集合框架来记录用户信息,所以在登录时直接在Myserver里进行判断,账号可以随便填,但密码必须是123456,不是则弹出提示框,是则跳转到好友列表。聊天功能没能实现从服务器转发到客户端,但是服务器已经可以抓到从客户端输入的信息。这里出了个错,我们测试服务器抓信息时很正常,但是关闭界面后会报错java.net.SocketException: Connection reset,应该是哪里的socket没有正常关闭,但是不知道怎么解决了,就留下了这个bug。一开始还没在意,继续往后写,当让服务器像客户端转发消息时就出错了。

2fa0931ff36d86eca34e55d1fa8c1f8d.png

可能是我太笨,实在是找不到一个好的角度自拍既可以拍到人有拍到电脑于是就这样拍了一张(虽然怎么看都像是秀恩爱而不像是在敲代码)

约定的规范:凡是涉及到界面设计的,需要加监听的地方,起名字都必须直观方便;客户端和服务器端必须有一个名字相同的包如com.commen,用来存放User,Message等类;端口号为9999;所有类的命名需要统一协商以便调用以及类里的方法或成员变量;规定好消息包,如1代表信息正确可以登录,2表示信息错误,还有其他消息包;每个功能前加注释。

记录时间:选题10min

分工、编写程序、调试总共用了四天(包括查书看视频)

心得体会:动嘴容易动手难,感觉挺好做的东西真正做起来会遇到很多问题,通信、流这里的知识不牢固,需要看着书才能敲出来,出了差错解决起来也不简单,项目涉及到集合框架知识,这里需要再系统学一学。不管以后做什么项目,一定要动手做,光看视频是很难掌握的,就算对着视频敲下来,也会发生一些错误,我这里出现最多的就是jdk版本问题……当然还有其他小问题,只好向度娘求助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

类的序列化[Serializable]

简介序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原…

java深度克隆大数据_Java - 深拷贝技巧

先让我描述一下问题:我在某Action(struts2.x)-A中写了一个功能P,以当前用户的某个标识F 1时需要走这个功能,而且这个功能因某些原因已经侵入到了其他一些method中。顺便一提,A中获得当前用户session的method已经被父类封装好了。然后我的代码已经push上去了,第二天…

Android中的Handler, Looper, MessageQueue和Thread

前几天,和同事探讨了一下Android中的消息机制,探究了消息的发送和接收过程以及与线程之间的关系。虽然我们经常使用这些基础的东西,但对于其内部原理的了解,能使我们更加容易、合理地架构系统,并避免一些低级错误。 对…

java平面_java知识点整理

一、http和tcp/ip的区别?http是应用层协议,主要解决如何封装数据。tcp/ip则是传输层协议,主要解决数据如何在网络中传递。web应用使用http协议作为应用层协议来封装成http文本协议,然后使用tcp/ip做传输层协议将信息发布到网络上。…

设计模式—适配器模式

一、概念 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four Adapter模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。 对象适配…

android UI进阶之实现listview的分页加载

上篇博文和大家分享了下拉刷新,这是一个用户体验非常好的操作方式。新浪微薄就是使用这种方式的典型。 还有个问题,当用户从网络上读取微薄的时候,如果一下子全部加载用户未读的微薄这将耗费比较长的时间,造成不好的用户体验&…

java stringutils_Java 笔记----- StringUtils 拼接字符

import org.apache.commons.lang3.StringUtils;StringUtils 提供了 join 方法用来 按照自定义的拼接符拼接join实现源码:感兴趣的可以看看public static String join(Iterator> iterator, String separator) {// handle null, zero and one elements before buil…

EJB分布式对象实现方式描述

在Java RMI中要求所有的参数传递和返回类型是JAVA的基本类型或实现Serilizable的对象。串行化对象通过值传递(又名拷贝传递),而不是引用传递。这意味着在某一层中串行化对象的更新并不自动影响到其它的对象。 对于EJB对象而言,它由…

iis5.0+php5.0+mysql5.0配置完全手册_IIS5.0+PHP5.0+MySQL5.0配置完全手册

IIS5.0PHP5.0MySQL5.0配置完全手册环境:windows Xp sp2 IIS5.0 MySQL 5.0 PHP 5.0.4 使用PHPWind3.0论坛程序使用PHPmyadmin2.6.3适合初学者的配置1.首先是安装IIS5.0xp默认下是没有安装IIS的"控制面板"> "添加删除程序"> "添加\删除windows组件…

蓝桥杯java提交格式_2019第十届蓝桥杯JAVA省赛B组

B 不同子串题目描述一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。 注意在计算时,只算本质不同的串的个数。请问,字符串0100110…

浅析Java与C#的事件处理机制(转)

Java与C#的事件处理都是实现了事件源-事件响应者机制,但又不完全相同。Java实现的是一种事件源与事件响应者两级实体对象方式,这里的事件响应者也是事件监听者,而C#实现的是一种事件源-代理-事件响应者三级实体对象方式。下面就这两种方式来具…

java xml接口实例化_Spring简介及xml配置

Java Web发展史第一阶段:JavaBeanServletJsp逐步发展第二阶段:面对EJB重量级框架带来的种种麻烦第三阶段:SpringMVC/StrutsSpringHibernate/myBatis第四阶段:享受SpringBoot"约定大于配置"的种种乐趣,很多繁琐的配置都变成了约定第五阶段:以Dubbo为代表的…

员工薪酬管理设计方案

待遇管理模块目前我遇到的要分两种方案,第一种是集团版的(有子公司、区域公司);第二种是标准版的(就是一个标准的公司,不存在什么子公司),下面就谈谈标准版个人是如何处理的。 特别感谢:江琴童鞋、罗静童鞋两位财务人员…

文件上传简介1---上传到指定的目录

preparation 本节摘要:本节主要介绍上传文件到指定目录。 引入: 文件上传是开发中常用的功能,本节主要介绍用commons-fileupload-1.1.jar包实现基本的文件上传功能,即上传文件到指定的目录中,同时介绍上传过程中使用到…

null和undefined相等

<script language"javascript"><!-- var v0 1; // 定义一个值为1的变量 var v1 null; // 定义一个变量&#xff0c;并指定值为null var v2; // 定义一个变量…

java 文件inputstream_java – 如何在InputStream中接收多个文件并相应地处理它?

我想收到从客户端上传的多个文件.我上传了多个文件并使用JAX-RS(Jersey)请求我的服务器端(Java).我有以下代码,POSTConsumes(MediaType.MULTIPART_FORM_DATA)public void upload(Context UriInfo uriInfo,FormDataParam("file") final InputStream is,FormDataParam(…

java驱动pl sql优点_用PL/SQL和Java开发Oracle8i应用程序

用PL/SQL和Java开发Oracle8 i应用程序随着Oracle8i的发布&#xff0c;Oracle 在数据库里支持了二种主要的编程语言??PL/SQL和Java。今天&#xff0c;Oracle的许多客户既使用PL/SQL建立数据库应用程序&#xff0c;也使用Java建立数据库应用程序。既然存在二种数据库编程语言&a…

java客户姓名添加和查找_java类与对象 演练 客户姓名添加与查看

java类与对象 演练 客户姓名添加与查看java类与对象 演练 客户姓名添加与查看https://www.ixigua.com/6870483106223096327?logTag_YUmIb2rn9-6JpoNipj9r属性由于需要保存很多名字因此来一个字符串的数组保存字符串的名字即可考虑&#xff0c;定义多个长度的数组&#xff0c;例…

Winform登录窗体登录仿asp.net验证成功后进入主界面

一、登录界面验证成功后进入主界面&#xff0c;否则则退出应用程序。 假设登录窗体frmLogin.cs和主界面frmMain.cs在程序的Main入口这样来实现&#xff1a; frmLogin login new frmLogin(); login.ShowDialog(); if (frmLogin.blCanLogin true) { Application.Run(new frm…