论文部分内容阅读
摘要:在网络盛行的今天,涌现了众多的网络聊天软件,如 QQ、MSN、UC 等,其核心编程思想是一样的,都使用了 TCP 或 UDP 协议和多线程技术,TCP和UDP协议是传输层中的重要协议。故本文基于TCP和UDP协议,采用java语言,完成聊天软件具有的最基本功能,包括文本信息的发送和接收,以及文件信息的发送与接收。
关键词: TCP;UDP;JAVA ;聊天软件
1 项目开发的整体思路
聊天程序,一般都是采用 C/S 模式。这样的模式有利于用户体念。
聊天程序主要是依赖于传输层来实现,在传输层中有两个重要的协议:TCP协议和UDP协议。其中 TCP 协议是一个面向连接的协议,本协议在进行网络传输过程中必须建立一个安全的连接,UDP是一种无连接的协议,所传输的数据不会进行安全检查。
操作系统版本为Windows 7。JDK版本为jdk1.8.0_45。开发选择的IDE为Eclipse IDE for Java EE Developers。
2 项目实现的过程
2.1 界面实现
本文使用JAVA的Swing开发工具包。
上述代码中展示了界面实现的核心代码,包括修改程序窗体名称等。
主界面主要采用了3个文本框和3个按钮。其中,最上面的文本框负责历史聊天记录的显示;中间的文本框负责确定用户的昵称。3个按钮依次为“传递文件”、“接收文件”、“发送”。
2.2 功能实现
使用过程中,文本信息的发送与接收以及文件信息的发送与接收这些功能可能会同时进行,所以需要采用多线程技术。
2.2.1接收消息线程的实现
这里接收消息线程采用的是UDP协议。
DatagramSocket(int prot):创建一个DatagramSocket实例,并将该对象绑定到本机默认IP地址、指定端口。
DatagramPacket(byte[] buf,int length):以一個空数组来创建DatagramPacket对象,该对象的作用是接收DatagramSocket中的数据。
这里,发送消息时,首先需要知道接收端的IP地址。然后需要获取当前的系统时间,对待发送的消息进行格式标准化。
这里,首先是获取需要发送的文件的名称,然后以普通文本信息发送的形式,将该条请求发送到接收端,接收端接收到该请求后,会把确认请求的反馈反馈回发送端,这样就模拟了TCP的“三次握手”确认。
该线程需要完整的读取该文件的所有数据,所以用了一个while循环,当读到文件末尾后,循环结束,关掉所有的流,文件发送成功。
2.2.5接收文件线程的实现
在此线程中,需要通过一个文件夹选择对话框选择文件需要保存的名称以及路径。
3 项目实施
(1)这里需要运行两个客户端,使用Eclipse的工程,即可完成两个客户端的建立。建立两个空的JAVA工程。示例图如图3-1所示:
(2)将通用的java文件MyQQ.java依次拷贝到两个工程的src。示例图如图3-2所示:
(3)分别运行两个工程,显示出两个客户端的界面。
(4)下面需要依次对两个客户端进行配置。
(5)依次设置两个客户端的参数。
同理,右边客户端的文本接收端口、文件接收端口即是左边客户端的目标文本端口、目标文件端口,而两个客户端运行在同一台电脑上,所以这里的目标接收地址皆可以填localhost即本机。
设置完成后点击“确定”按钮,即会在本地生成一个设置文件。如图3-3所示。
(6)由小华发起“传递文件”,小明进行接收。
4 结语
本文介绍了项目实现的具体过程,包括界面实现以及多线程中各个线程的实现,最后介绍了项目实施的过程。
完成此次毕业设计,我熟悉了TCP、UDP协议,掌握了java的socket通信以及Swing界面编程。同时学会了对软件进行需求分析,能够将需求抽象成功能,进阶将功能实现成函数,降低功能之间的耦合性。
关键词: TCP;UDP;JAVA ;聊天软件
1 项目开发的整体思路
聊天程序,一般都是采用 C/S 模式。这样的模式有利于用户体念。
聊天程序主要是依赖于传输层来实现,在传输层中有两个重要的协议:TCP协议和UDP协议。其中 TCP 协议是一个面向连接的协议,本协议在进行网络传输过程中必须建立一个安全的连接,UDP是一种无连接的协议,所传输的数据不会进行安全检查。
操作系统版本为Windows 7。JDK版本为jdk1.8.0_45。开发选择的IDE为Eclipse IDE for Java EE Developers。
2 项目实现的过程
2.1 界面实现
本文使用JAVA的Swing开发工具包。
上述代码中展示了界面实现的核心代码,包括修改程序窗体名称等。
主界面主要采用了3个文本框和3个按钮。其中,最上面的文本框负责历史聊天记录的显示;中间的文本框负责确定用户的昵称。3个按钮依次为“传递文件”、“接收文件”、“发送”。
2.2 功能实现
使用过程中,文本信息的发送与接收以及文件信息的发送与接收这些功能可能会同时进行,所以需要采用多线程技术。
2.2.1接收消息线程的实现
这里接收消息线程采用的是UDP协议。
DatagramSocket(int prot):创建一个DatagramSocket实例,并将该对象绑定到本机默认IP地址、指定端口。
DatagramPacket(byte[] buf,int length):以一個空数组来创建DatagramPacket对象,该对象的作用是接收DatagramSocket中的数据。
这里,发送消息时,首先需要知道接收端的IP地址。然后需要获取当前的系统时间,对待发送的消息进行格式标准化。
这里,首先是获取需要发送的文件的名称,然后以普通文本信息发送的形式,将该条请求发送到接收端,接收端接收到该请求后,会把确认请求的反馈反馈回发送端,这样就模拟了TCP的“三次握手”确认。
该线程需要完整的读取该文件的所有数据,所以用了一个while循环,当读到文件末尾后,循环结束,关掉所有的流,文件发送成功。
2.2.5接收文件线程的实现
在此线程中,需要通过一个文件夹选择对话框选择文件需要保存的名称以及路径。
3 项目实施
(1)这里需要运行两个客户端,使用Eclipse的工程,即可完成两个客户端的建立。建立两个空的JAVA工程。示例图如图3-1所示:
(2)将通用的java文件MyQQ.java依次拷贝到两个工程的src。示例图如图3-2所示:
(3)分别运行两个工程,显示出两个客户端的界面。
(4)下面需要依次对两个客户端进行配置。
(5)依次设置两个客户端的参数。
同理,右边客户端的文本接收端口、文件接收端口即是左边客户端的目标文本端口、目标文件端口,而两个客户端运行在同一台电脑上,所以这里的目标接收地址皆可以填localhost即本机。
设置完成后点击“确定”按钮,即会在本地生成一个设置文件。如图3-3所示。
(6)由小华发起“传递文件”,小明进行接收。
4 结语
本文介绍了项目实现的具体过程,包括界面实现以及多线程中各个线程的实现,最后介绍了项目实施的过程。
完成此次毕业设计,我熟悉了TCP、UDP协议,掌握了java的socket通信以及Swing界面编程。同时学会了对软件进行需求分析,能够将需求抽象成功能,进阶将功能实现成函数,降低功能之间的耦合性。