基于Java_Socket通信程序设计
- 格式:docx
- 大小:1.22 MB
- 文档页数:67
辽宁工程技术大学毕业设计(论文)摘要随着时代的发展,人们互相交流的方式也在逐渐变化,从原来的面对面,到电话、手机,然后到短信、E-mail,再到现在的QQ、微信,聊天变得越来越具有实时性和有效性。
但是现在聊天软件都必须连接到Internet后才能够让人们相互交流。
如果用户在工作时候连接网络,有可能因为网络的关系使得工作效率变低;也有可能因为网络的关系,让公司内部的资料被泄露出去,使公司收到损失。
因此进行一个在局域网下的聊天工具的设计是很有必要的。
本文介绍了在局域网内实现相互收发消息的基本流程,并且编写了一个基于Socket的聊天窗口。
这个简单的软件采用的是C/S结构模式,即客户端/服务器模式。
这个软件可以让客户端和客户端能够进行通信,服务器端也能够对客户端进行发消息,还能够进行监听客户端的所有消息。
不足之处是只能够启动一个服务器,所有的客户端只能够通过一个端口连接服务器进行通信。
如果让客户端不看到不属于这个端口的其它客户发的消息,必须重新定义Server端,更改端口。
本文用到了Sock编程、多线程、TCP/IP协议还有图形界面设计的控件编程的知识。
通过对程序进行测试,发现程序能够在同一个局域网下实现多人通信。
我们也许通过路由器分配的IP,也可以利用现在流行的“免费WiFi”,让所有人连接WiFi,这样,也会给每个客户端分配IP地址,这样也就有了局域网,它并不需要外网的帮助。
关键词:局域网;Socket;多线程;TCP/IP常城:基于Java_Socket通信程序设计AbstractWith the development of the times, the communication mode of people is changed gradually. Yesterday, we communicated with each other face to face, then we tell something to others using telephone, cellphone, and then using message, e-mail. Now we tell something to each other with QQ, MSN and wechat. Communication becomes more and more real-time and ephemeral. But the software we used should depend on the Internet. If not, they are nothing. If we connect the Internent during working, we may not devote ourself into our jobs. And also, the important information may be leaked to let the company lost money. So it is important to design a software about chating in the LAN but not on the Internet.This paper intruduce that people send messages to each other in the local area network. And Programming the chat window based on the Socket. This simple application use the C/S model. The C/S model is Client/Server model. This application can let the different client sends or receives messages. Server can send message to every client and it can get all messages of every client sends. There is a weak point that people can just start one server. All clients should use the port the server given. If we want to divide people, we should change the port and copy another “Server” code to start new server, then some people use this server and others use another server. This paper uses the knowledges about the Socket programming, multithreading, TCP/IP protocol and the control programming about the GUI.When tested, the application can let multi clients send or receive messages. We may use the IP that the router gives us, we can also use the “Free-WiFi”that is popular now to let everyone connect the WiFi, then everybody has one IP. People have a local area network and it does not need the Internet.Key words: Local Area Network; Socket; Multithreading; TCP/IP辽宁工程技术大学毕业设计(论文)目录引言 (1)1 实现原理 (2)1.1 C/S结构 (2)1.2 TCP/IP协议 (4)1.3 套接字 (5)1.4 多线程 (6)1.5 Socket的同步和异步方式 (8)1.6 用Socket开发的C/S模型 (8)2 总体设计 (9)2.1 程序实现原理 (9)2.2 C/S架构设计 (10)2.3 数据流图 (11)3 模块设计 (12)3.1 系统的总体流程图 (12)3.3 上传文件 (14)3.4 下载文件 (15)3.5 服务器和客户端图形界面的的详细设计 (17)3.6 服务器等待连接的详细设计 (20)3.7 监听端的详细设计 (21)3.8 客户端发送消息内容以及连接服务器程序 (22)3.6 获得客户端ip (22)4 系统测试 (23)4.1 聊天程序测试 (23)常城:基于Java_Socket通信程序设计4.2 上传与下载程序测试 (26)致谢 (28)参考文献 (29)附录A (30)附录B (43)辽宁工程技术大学毕业设计(论文)引言近年来,随着科技的不断进步,网络也在快速向前发展着。
企业为了高效迅速并且安全地处理各种事情,它们越来越多地使用局域网来工作而不用外部网路。
因为局域网能够提高信息传输效率,简化信息的传递途径,这样便能够提高工作效率。
还有一个原因是使用Internet传递信息,这些信息有可能会泄露出去,对企业产生危害。
基于这种情况,局域网聊天工具就出现了。
本文的通信程序设计采用的是基于Socket的局域网通信工具的设计。
如果通信软件是基于Socket的,那么它可以利用局域网传递信息,给企业提供高效率、安全的通信机制。
还有一个优点是,使用基于Socket的软件可以不需要对企业原有的网络进行改动,因此不需要什么实现的成本[1]。
Socket其实不仅能够用于传递文字信息,还能够传输文件,这样的话,它也就可以对视频、音频进行传输。
因此它的应用范围就不会那么局限了。
这也是它能够让大众接受的原因之一。
当下有很多聊天软件,例如腾讯QQ、微信、MSN。
QQ在前几年到现在都是很受欢迎的软件,基本每个人都会有至少一个QQ账号。
在此,就选取它来进行大体研究,看看它是如何实现单人和单人以及在组群中聊天的。
通过网络上的信息,可以了解到QQ是以多服务器提供服务、服务器总控客户端、客户端之间UDP直接通信的,并且仅仅是在两个客户端之间没有建立过连接时候,才会利用服务器对客户端的信息进行转发。
在这种模式下,服务器主要是用来处理客户端各种状态的控制,这么做能够很大程度上减少服务器的工作量。
但是这里面的实现是比较复杂的。
此次课程设计完成了一个Server可以让多个Client和它建立链接并且相互发送信息的程序,并不需要那么复杂,因此还是利用了这种C/S结构。
1常城:基于Java_Socket通信程序设计1 实现原理本次通信程序的实现用的是Java语言。
Java是一种可以编写跨平台应用软件的面向对象的程序设计语言,网络应用是Java语言取得成功的领域之一,它己经成为现在Internet上最流行的一种编程语言。
网络编程的目的就是直接或间接地通过网络协议与其它计算机进行通讯。
两台计算机通讯需解决两个主要问题:一是如何准确定位网络上的主机;二是找到主机后如何可靠有效地进行数据传输。
[2]Java语言作为网络编程语言,提供了强大的网络编程接口。
针对网络通信的不同层次,Java提供的网络功能的类有四种,它们分别是InetAddress、URL、Socket和Datagramo。
Socket是Internet使用的协议组TCP/IP的组合,实现了两台主机之间通过端口进行网络通信。
包中提供Socket类,隐藏了Socket的实现细节,不需要开发者编写接口程序,而可以快速的实现网络的通信。
[3]1.1C/S结构Client/Server结构(C/S结构)是大家熟知的客户机和服务器结构。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
当下的很多软件都是基于Client/Server形式的两层结构,这是因为现在的软件和应用系统都在想着分布式的Web应用发展,而C/S结构对此很有优势。
举个例子,大家都只到QQ,那么也应该知道WebQQ。
如果QQ需要更新,那么我们每个客户端都需要进行接入网络然后进行更新,才可以享用新版本,但是WebQQ只需要服务器端进行更新即可,根本不需要使用者做更新的操作。
专业地来讲,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。