基于socket的即时通讯的研究毕业设计 下载本文

结 束 语

经过近3个月的学习与能力终于实现了基于socket的局域网即时通讯项目,在这个过程中我学会了很多东西,收获了许多。当然这其中也有老师和同学们的帮助与大力支持离不开的。在这里我对我的毕业设计做如下两方面的总结:

(一)收获

首先让我知道了在开发一个项目的时候我们必须先做好的就是前期的需求分析,如果需求分析不够完善,那么也就意味着我们在后期要做很多的无用功。因此在开发本系统之前我上网查了很多关于即时通讯软件的分析资料,得知它们的基本功能。在开发这个项目之前我还不了解socket通讯的原理,我们平常聊天是怎么实现数据的交换的。现在我知道了socket是如何和后台服务器进行连接和数据的交换,tcp协议和udp协议有什么区别,聊天使用说明协议比较好呢。还有就是连接网络都使用哪些协议。在这一段时间的学习了我对这些都有了基本的了解,或许在大学期间我们是都有学过但是我们到底如何去使用它们呢。就比如在本项目里面就是使用了tcp协议进行的数据连接。在服务器端要创建serverSocket监听指定的端口号,在客服端要新建一个socket(port,ip) 监听端口和当前的用户ip地址,这样就可以进行数据交换。

我觉得在开发这个项目的时候我最大的收获就是学会了如何在android里面调试代码,学会了如何去调错,并且改正这个错误,这个能力我认为是至关重要的。每个人都不敢保证自己的代码不会出错,出错了怎么办。从一开我无从下手到现在的可以说是得心应手吧,我认为这是我做这个毕业设计最大的感悟。

学会如何在MyEclipse配置android的开发环境,android的开发要在java的基础上进行的,所以我们要先有一个java虚拟机。这里就不详细说了。Android环境的配置还是有点小纠结的但是最后还是学会了。

(二)不足之处

说到不足之处,这个项目还是有很多功能没有实现,有些界面还是没有处理好。 首先我觉得我的数据库表设计的有点小问题,虽然说可以用,但是就比如说我的好友表,每次新注册一个用户就会新建一个好友列表。这里应该是不合理。如果以后用户多的话管理起来会很不方便的。

其次就是在登陆之后的联系人界面我使用了tab页来管理三个页面这里的代码有点乱,其实最好是把它们分开写的,但是当时为了图省事和顾忌逻辑思路的问题也就把他们写在了一起,这样就显得代码有点杂。还有就是有些界面不够精美,比较粗糙。

25

致 谢

时光匆匆如流水,转眼便是大学毕业时节,春梦秋云,聚散真容易。离校日期已日趋渐进,毕业论文的完成也随之进入了尾声。从开始进入课题到论文的顺利完成,一直都离不开老师、同学、朋友给我热情的帮助,在这里请接受我诚挚的谢意!在此我向烟台大学计算机学院的所有老师表示衷心的感谢,谢谢你们三年的辛勤栽培,谢谢你们在教学的同时更多的是传授我们做人的道理,谢谢三年里面你们孜孜不倦的教诲!

本设计在宋宜斌老师的悉心指导和严格要求下业已完成,从课题选择、方案论证到具体设计和调试,无不凝聚着#老师的心血和汗水,在四年的本科学习和生活期间,也始终感受着导师的精心指导和无私的关怀,我受益匪浅。在此向宋宜斌老师表示深深的感谢和崇高的敬意。

26

参考文献

[1]java继承性的探讨李斌,王睿 学术期刊

[2]熊晓敏,刘瑛,陈惠清.基于Java的网络即时通讯系统的设计与实现[J].计算机与现代化,2005(12): 89-92.

[3]socket的定义 百度百科 [4]数据库设计模式 百度百科

[5]使用mvc设计模式的主要目的 百度百科 [6]关于数据库设计中的范式及其应用。 [7] Socket通讯原理 学术期刊

27

附录A 部分代码

package com.way.client;

import java.io.IOException; import java.net.InetSocketAddress; import java.net.Socket; /** * 客户端 *

* @author way * */

public class Client {

private Socket socket;

private ClientThread clientThread; private String ip; private int port;

public Client(String ip, int port) { }

public boolean start() {

this.ip = ip; this.port = port;

try {

socket = new Socket();

socket.connect(new InetSocketAddress(ip, port), 3000); if (socket.isConnected()) { }

e.printStackTrace();

clientThread = new ClientThread(socket); clientThread.start();

} catch (IOException e) {