“基于Socket的网络聊天系统的设计与实现”课程设计报告
网络编程课程设计报告AndroidSocket聊天室

网络编程课程设计报告课程名称 java程序设计之网络编程题目 Android Socket 聊天室专业信息管理与信息系统班级组长副组长组员指导教师目录5.一、设计目的随着人们对手机的依赖程度越来越深和人们相互之间的交流越来越多,开发一款手机聊天软件便显得尤为重要。
我组开发的手机聊天软件-Android Socket 聊天室不仅可以让人们相互之间的交流变得越来越便捷,而且通过对Android Socket 聊天室的开发,使得我们能更好的掌握网络编程知识,锻炼自己的java编程能力。
二、开发工具和开发环境1、开发工具: Eclipse2、开发环境:JDK三、设计原理1、实现思想Socket是TCP/IP协议上的一种通信,在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。
一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。
2、服务器端工作流程(1)创建服务器端套接字并绑定到一个端口上(2)套接字设置监听模式等待连接请求(3)接受连接请求后进行通信(4)返回,等待赢一个连接请求3、客户端工作流程(1)创建客户端套接字(指定服务器端IP地址与端口号)(2)连接(Android 创建Socket会自动连接)(3)与服务器端进行通信(4)关闭套接字四、系统流程图五、系统设计本课程设计按照系统的具体功能要求,首先应用Socket编程创建客户端和服务器端,每多个客户端服务器端就会相因的创建一个线程,它们之间通过这个连接来实现数据通信;然后在客户端设置一个监听器,用于监听服务器发来的消息。
并根据消息做出不同的动作。
1、系统功能该系统实现了用户之间的点对点单人聊天,在线用户之间的群聊。
在客户端和服务器端都可以查看历史消息、保存消息、清空消息。
为了监控用户之间的状态,服务器还可以实现踢掉用户的功能,同时用户时间文件传输的信息都会在服务器上显示。
2、系统架构1)选择传输控制协议TCP,使用Java的Socket编程机制,分别建立客户端与服务器端;2)分别设计客户端与服务器端的界面,客户端使用的是用安卓开发界面。
C++课程设计:基于Socket通信的聊天室

C++课程设计:基于Socket通信的聊天室课程设计报告课程名称: 高级语言课程设计设计题目: 基于Socket通信的聊天室专业:计算机科学与技术姓名:学号:指导教师:李晓虹2016 年 1 月 10 日1(需求分析1.1聊天室程序的开发背景近年来,互连网发展日新月异,网络使空间的距离不再成为人们沟通的障碍,世界各个角落的人们可以通过Internet收发邮件、实时聊天、获取最新的资讯。
因此本次毕业设计以“面向连接的Winsock网络会话程序开发”为题,制作一个C/S聊天室程序,通过制作该程序还能更好的学习网络socket编程的相关知识。
1.2聊天室的设计目标本课题是建立聊天通信模型,设计一个聊天室软件,只是简单的利用Socket来实现端到端的通信,主要功能为:服务器端功能:1、初始化socket, 进行单对单的点对点连接模式2、输入远程用户的IP地址可以进行socket连接。
3、接受用户传送来的聊天信息,然后显示在列表上。
4、接受用户传送来的连接判断命令,并向用户发出响应命令。
2.总体设计2.1 功能要求, 支持点到点的连接,在服务器和多个客户端之间进行数据传输;, 接收客户端发送的消息,并显示在一个列表框中;, 显示出连接的用户计算机名字;2.2系统主要功能和主要功能描述:聊天程序必须能够做3件事情:(1) 聊天程序要在待定的端口上通过socket发送聊天文字,并发送到开启相同程序的客户端。
(2) 聊天程序要及时接受从其他地方发送过来的信息,然后把这些信息显示在列表框中去。
(3) 服务器还要监控这些连接的状态,在客户主动离开或发生故障时从列表中删除相应的表项,并及时更新连接表。
这些要求可以通过CSocket类提供的功能实现。
从CSocket派生出两个类CListenSocket和CClientSocket,它们分别用来侦听客户的连接请求和建立与客户的连接。
服务器只需要一个侦听套接字CListenSocket,然后根据客户的连接请求动态创建客户套接字CClientSocket。
基于socket的多人聊天程序设计与实现

一、概述1.1 背景介绍近年来,随着互联网的普及和发展,网络通信已经成为人们日常生活中不可或缺的一部分。
在网络通信中,聊聊功能更是用户最常使用的应用之一。
为了满足用户对于多人聊聊的需求,设计和实现基于socket的多人聊聊程序成为了亟待解决的问题。
1.2 研究目的本文旨在通过对基于socket的多人聊聊程序的设计与实现,探讨如何利用socket技术实现实时的多人聊聊功能,并且探索其中涉及的通信协议、数据传输、用户界面设计等方面的技术难点。
二、技术原理与实现步骤2.1 socket技术介绍在进行基于socket的多人聊聊程序设计与实现之前,首先需要了解socket技术的基本原理。
socket是一种在网络通信中广泛使用的技术,它允许通过特定的IP位置区域和端口号在计算机之间进行通信。
2.2 多人聊聊程序的架构设计设计一个稳定、高效的多人聊聊程序,首先需要对其整体架构进行设计。
在多人聊聊程序中,通常会涉及服务器和多个客户端之间的通信,因此需要考虑服务器的选择和客户端之间的连接方式。
2.3 数据传输与通信协议实现多人聊聊程序还需要考虑数据传输和通信协议的选择。
在设计中,需要确定何种数据传输方式和通信协议能够更好地满足多人聊聊程序的需求。
2.4 用户界面设计与交互体验在实现多人聊聊程序的过程中,用户界面的设计及交互体验也是至关重要的一环。
一个易用、美观的界面设计能够提升用户体验,增强程序的吸引力。
三、实现过程与技术难点解析3.1 服务器端程序设计实现多人聊聊程序的第一步是设计并实现服务器端程序。
在服务器端程序设计中,需考虑并发连接的处理、用户消息的路由、状态管理等问题。
3.2 客户端程序设计客户端程序是用户与服务器进行交互的主要部分,因此其设计需考虑用户登入注册、消息发送接收、显示处理、系统提示等功能。
3.3 数据传输及通信协议选择在实现多人聊聊程序的过程中,需要选择合适的数据传输方式和通信协议。
针对不同的需求和场景,选择不同的数据传输方式和通信协议能够更好地满足多人聊聊程序的需求。
基于Socket的网络聊天程序设计报告

学生学号实验课成绩武汉理工大学学生实验报告书实验课程名称高性能计算机网络实验题目基于Socket的网络聊天程序设计指导老师姓名学生姓名学生专业班级2011 —2012 学年第一学期实验课程名称:高性能计算机网络第一部分:实验分析与设计一、实验内容描述(问题域描述)内容:综合运用网络协议、编程语言、API和图形界面实现基于socket建立、监听、连接、发送数据和接收数据的网络通信程序。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)本程序采用基于面向无连接的UDP协议。
需要用到的函数有bind()、 sendto()、 recvfrom()等设计一个基本的网络服务器有以下几个步骤:1、初始化Windows Socket2、创建一个监听的Socket3、设置服务器地址信息,并将监听端口绑定到这个地址上4、开始监听5、接受客户端连接6、和客户端通信7、结束服务并清理Windows Socket和相关数据,或者返回第4步客户端程序框架类似三、主要仪器设备及耗材Windows XP 操作平台Microsoft Visual C++ 6.0 开发环境第二部分:实验调试与结果分析一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)上机前编写好代码,用VC 6.0 编译时发现出现链接错误二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)经分析,应该在“工程”-“设置”-“连接”下的“对象/库模块”中添加“ws2_32.lib”在运行时应该先启动服务器端程序,再启动客户端程序。
源代码以及运行结果截图见附页。
三、实验小结、建议及体会通过本次实验,巩固了自己的编程能力,把课堂上学习到的通信协议用到了实践中,对于各种通信协议的理解很有好处。
不足的的对于图形界面编程能力不足,今后应该在这方面多多下功夫。
服务器端代码:#include <stdio.h>#include <WINSOCK2.H>void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(1, 1);err = WSAStartup(wVersionRequested, &wsaData );if (err != 0 ){return;}if (LOBYTE(wsaData.wVersion) != 1 ||HIBYTE(wsaData.wVersion) != 1){WSACleanup();return;}SOCKET sockSrv = socket(AF_INET, SOCK_DGRAM, 0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(6666); //设置端口号为6666 bind(sockSrv, (sockaddr*)&addrSrv, sizeof(sockaddr));char sendBuf[100];char recvBuf[100];char tempBuf[200];int len = sizeof(sockaddr);SOCKADDR_IN addrClient;while(1){recvfrom(sockSrv, tempBuf, strlen(tempBuf), 0,(sockaddr*)&addrClient, &len);if('q' != tempBuf[0]){sprintf(recvBuf, "%s say: %s", inet_ntoa (addrClient.sin_addr), tempBuf);printf("%s\n", recvBuf);printf("please input your data: ");gets(sendBuf);sendto(sockSrv, sendBuf, strlen(sendBuf) + 1, 0, (sockaddr*) &addrClient, len);}else // 若接收到'q',则退出聊天{printf("%s request to quit the chat platform.\n",inet_ntoa(addrClient.sin_addr));sendto(sockSrv, "q", strlen("q") + 1, 0, (sockaddr*)&addrClient, len);break;}}closesocket(sockSrv);WSACleanup();}客户端代码:#include <stdio.h>#include <WINSOCK2.H>void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(1, 1);err = WSAStartup(wVersionRequested, &wsaData);if (err != 0){return;}if(LOBYTE(wsaData.wVersion) != 1 ||HIBYTE(wsaData.wVersion) != 1 ){WSACleanup();return;}SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, 0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//htonl htons inet_addr inet_ntoaaddrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(6666); //设置同样的端口号6666 char sendBuf[100];char tempBuf[200];char recvBuf[100];int len = sizeof(sockaddr);while(1){printf("please input your data: ");gets(sendBuf);sendto(sockClient, sendBuf, strlen(sendBuf) + 1, 0, (sockaddr*)&addrSrv, len);recvfrom(sockClient, tempBuf, strlen(tempBuf), 0, (sockaddr*)&addrSrv, &len);if('q' != tempBuf[0]){sprintf(recvBuf, "%s say: %s", inet_ntoa(addrSrv.sin_addr), tempBuf);printf("%s\n", recvBuf);}else // 若接收到'q',则退出聊天{printf("the server has been closed!\n");sendto(sockClient, "q", strlen("q") + 1, 0, (sockaddr*)&addrSrv, len);break;}}closesocket(sockClient);WSACleanup();}运行结果截图:。
基于Socket的网上聊天室设计与实现

2 Socket 通信实现
利用 J ava 的多线程机制可以非常方便 的实现并发服务 。每当服务器主程序创建一 个新的套接字连接时 (即成功调用了 accept () 方法) ,会启动一个新的线程来负责本服务 器和该客户之间的连接 ,主程序将返回并等 待下一个连接 。ThreadedCht Handle 类是从 Thread 类衍生出来的处理聊天过程的子类 , 它的 run () 方法包括了服务器和客户的通信
字3/
private String host ;
private boolean connected = false ;
public boolean is Connected () {return connected ;}
public Client (ChatApplet applet) { t ry{ host = applet . getDocumentBase () . get Host () ; / / host = ”2021115141246”; Socket = new Socket (host Server. port) ; / 3 与服务器建立连接 ,如果该连接未被创
Content - T YPE :text/ html 〈空行〉
……
然后服务器关闭 Socket 联接 。 (3) 浏览器收到以上 ht ml 文件后 ,将会 依次打开三个联接 (其中的 $sid 和 $encrypt pass 是变量) :
基于Socket网络聊天系统的设计与实现

摘要随着Internet的飞速发展,网络聊天以其操作简单、方便快捷、私密性好等优点已经迅速发展成为最普遍的网络交流方式之一,越来越受到人们的青睐,丰富了人们的网上生活.开发并实现具有自身特色的网络聊天系统具有实际应用价值。
本网络聊天系统基于Java应用程序设计,以Client/Server为开发模式,以Eclipse为开发环境,以MySQL为后台数据库,利用JDBC连接数据库。
系统主要包括服务器模块和客户端模块,服务器模块能够对客户端发来的用户信息进行匹配、读取和转发;客户端模块能够进行注册、登录、聊天和文件传输。
系统不但实现了点到点的聊天,还利用Java提供的Socket类和多线程功能,在单个程序中同时运行多个不同进程,从而实现多点对多点的聊天。
总之,该聊天系统具有开放性,实时性,多话题交错等特点,方便了人们网上交流。
【关键词】网络聊天服务器模块客户端模块SocketﻬABSTRACTWith the rapiddevelopment of Internet, network chat with its simple operation,convenient and gondprivacy has quickly become themost popularwayofcommunication networks,mo reandmorepeople like it, enrichpeople's online lives.De velopment and Realizationof the network chat system with its o wn characteristics and has practical application value.The Internet chat system isbasedon Java application, designedby Client/Server asthedevelopmentof models, as Eclipse developmentenvironment, MySQL asthe backend database,andusing JDBC to connect database. The system includes server modules andclient modules, server module canmatch user s'data, read and forward the informationwhich is sentby client;clientmoduletoregist,login, chat and file transfer.The system not only achieves peer-to—peer chat, but also usetheJava provids Socket class and multi—threading capabilities,in a single program run differentprocesses at thesame time,in orderto achieve multipoint chat。
socket网络课程设计报告

计算机网络课程设计报告网络连天程序的设计与实现姓名: 李坚学号: 0855010206班级:计算机002指导老师:文宏湖南科技大学计算机科学与工程学院2011年9月一、课程设计题目利用Windows Socket编程实现局域网的聊天程序,要求能实现消息的发送和接收,以及聊天软件的细节问题。
二、题目分析拿到题目之后先来了解windows socket连接的过程与相关的API 函数。
按照题目的要求,我简单的分析了下并做了初步的设计:利用tcp协议建立连接,这样服务器和客户端分离,服务端先启动并监听端口,客户端启动之后连接服务端建立连接,接着收发聊天信息。
当任意一方连接断开的时候给出适当的提示并结束程序。
因为功能比较简单,所以设计起来还是比较容易的.实际的操作中我遇到了很多新奇的问题并通过一些方案修改或者实现了最终的功能。
三、设计步骤1、熟悉网络编程概念以及一些基本知识2、在windows 的编程环境下熟悉了常用socket函数3、先整体再局部顺序设计程序4、调试并修改程序,使之实现设计要求5、测试程序,从中找出程序缺陷和可改进内容6、重复修改和测试,以达到自己理想的功能7、程序评定测试8、撰写设计报告四、设计过程第一个版本并未实现收发同步,只是简单的阻塞式通信。
因为没有用到多线程,所以在程序监听网络数据写入时不能监听键盘输入,所以只能发一条后接一条,其中的问题可想而知。
第二个版本用多线程实现了同时收发问题,在连接建立后新建一个线程用来等待键盘输入,而主体线程等待网络输入,当网络输入错误时(连接断开),结束线程并作下一步处理。
这个版本就上个版本改进很多,主要可以即时在屏幕输出接收到的消息,同时也出现了另外一个缺陷:当键盘输入到一半时程序收到了网络的信息,这个时候程序的做法是直接输出这条信息,这导致我们键盘输入的信息被切断,很不人性化。
第三个版本,也就是目前评测的版本,这个版本利用临界值来锁定屏幕资源,让程序在同一时刻只能一个程序拥有屏幕控制权,这样保证了不会交叉显示.另外我用自己的输入输出代替了原有的scanf 和printf,这样使读写更安全可靠。
基于socket的聊天程序设计与实现

基于socket的聊天程序设计与实现学生姓名:XXXXXXXX 指导老师:XXXXXXXXXXXX摘要本设计在WINDOWS平台上,以C语言为编程语言,实现局域网内的即时通信工功能即聊天的功能。
本设计是基于Windows Socket的编程,分别在同一局域网内的两台PC机的VC++ 6.0平台上运行服务端和客户端程序。
服务器与客户端在Windows7 环境下采用了TCP/IP连接方式,由客户端登录到服务端PC机,实现客户端与服务端PC的信息传输。
关键词socket;C语言;TCP/IP;程序设计;VC++6.01 引言近年来,随着全球信息化进程的不断发展,网络也在飞速发展。
出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。
在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。
然而,随着企业规模的扩大,业务量的增加,在局域网上运行的应用越来越多,如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息吞吐、处理能力的要求也越来越高。
这些在企业内部原有局域网设计之初未曾考虑到的新情况的出现使得局域网不堪重负,容易发生信息阻塞,此时,局域网不但不能提高生产效率,反而成为企业发展的瓶颈。
为了解决上述矛盾,人们提出了许多方法。
提升网络带宽及增加服务器的吞吐能力是解决此矛盾的一种方法。
然而,从企业运行的成本方面考虑,无论是单纯地提升网络带宽或增加服务器的吞吐能力都不能从根本上解决局域网资源紧张的问题,对旧有局域网的大规模硬件改造反而会增加企业的负担。
基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。
它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。
基于Socket的局域网聊天工具是此类局域网通信软件的具体实例之一,它很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。
基于Linux的socket网络编程聊天工具课程设计

*****《软件综合开发案例教程》课程设计报告课程设计题目小组成员:**,**,**,**任课讲师和助教:**,**2014年 10 月 29 日摘要这个课程设计整体采用在linux平台下,在同一局域网内实现聊天功能。
整体框架主要分为服务端和客户端两个部分,设置好ip和端口号,在Linux下编译和调试两主大块程序,实现服务端和客户端的连接,然后以服务端作为中继转实现客户端之间的通信。
使用socket网络编程采用TCP/IP协议保证连接可靠,并在项目管理中采用linux流行的gcc和makefile编译,提高了编译和调试效率,加快了项目的完成速度。
本次设计的聊天工具采用字符串命令行的方式进行通信,主要实现了五个功能:用户之间一对一的聊天、编辑、换行、用户之间聊天记录保存、聊天记录调取。
经过测试,程序运行可靠,能满足在linux中实现网络聊天的要求。
关键词 linux,socket,gedit,服务端,客户端,网络编程AbstractThe course design of the overall use in the Linux platform, within the same LAN chat functions.Overall framework consists of server and client two parts, set up IP and port number, two main large program under Linux compiling and debugging, to connect server and client, and then turn to the server as a relay to realize the communication between the e the socket network programming using TCP/IP protocol to ensure reliable connect, and using Linux popular GCC in project management and compile a makefile, improve the efficiency of the compiling and debugging, to speed up the completion of the project.The design way of chat tool USES the string on the command line to communicate, has realized the five main functions: the one-on-one chat between users, editing, line feeds, chat records, chat records obtained between users.After testing, the program runs, reliable and can meet the requirements of the implementation in the Linux network chat. Keywords Linux, socket, gedit, server, client, network programming目录摘要 (II)Abstract (II)第一章绪论.......................................................................................... - 1 -1.1、背景......................................................................................... - 1 -1.2、网络聊天的发展状况 ............................................................ - 1 -1.3、Linux系统............................................................................ - 2 -1.3.1 、Linux的简介............................................................... - 2 -1.3.2 、Linux发展历程........................................................... - 3 - 第二章系统应用技术 ......................................................................... - 4 -2.1 、socket概念及功能 ............................................................... - 4 -2.2、socket类型 ........................................................................... - 5 -2.3 、socket函数 ........................................................................... - 5 -2.3.1 、API功能介绍.............................................................. - 5 -2.3.2、套接口地址结构 ........................................................... - 7 -2.3.3、基本转换函数 ............................................................... - 8 -2.3.4、socket编程流程 ............................................................ - 8 -2.4、TCP/IP 协议......................................................................... - 10 -2.4.1、协议概述 ..................................................................... - 10 -2.4.2、TCP/IP层次结构 ........................................................ - 10 - 第三章需求分析 ............................................................................... - 13 -3.1 、功能需求 ............................................................................ - 13 -3.2、性能需求 .............................................................................. - 13 -3.3 、模块划分 ............................................................................ - 13 -3.3.1、界面需求设计 ........................................................... - 14 -3.3.2 、通信需求 ................................................................... - 14 -3.3.3 、数据存储 ................................................................... - 14 -3.4、系统总流程图 ...................................................................... - 14 - 第四章系统测试 ............................................................................... - 15 -4.1、测试说明 .............................................................................. - 15 -4.2、模块测试 .............................................................................. - 15 -4.3、测试结果分析 ...................................................................... - 16 - 第五章设计和实现 ........................................................................... - 16 -5.1、窗体的设计 .......................................................................... - 16 -5.2、实现服务器与客户端的连接 .............................................. - 17 -5.3、聊天功能 .............................................................................. - 18 -5.4、编辑功能的实现 .................................................................. - 19 -5.5、换行功能的实现 .................................................................. - 20 -5.6、数据库的创建与连接 .......................................................... - 21 -5.6.1、MySQL数据库的简介 ............................................... - 21 -5.6.2、MYSQL环境搭建 ...................................................... - 21 -5.7 、显示聊天记录 .................................................................... - 23 -结论................................................................................................ - 25 - 致谢................................................................................................ - 26 -第一章绪论1.1、背景随着Internet的快速发展和普及,网络已经遍布世界各个角落。
基于Socket的聊天程序

JAVA程序设计课程设计报告课题: 基于Socket的聊天程序姓名:骑蚂蚁去流浪学号:0213同组姓名:专业班级:计科0912班指导教师:刘国清设计时刻:2012年上学期第01周评阅意见:评定成绩:指导老师签名:年月日目录一、前言 (2)二、课题概述 (2)(一)课题概述 (3)(二)相关技术 (3)三、系统设计 (3)(一)需求分析 (4)(二)系统功能 (5)(三)系统架构 (6)(四)模块设计 (7)四、详细设计与实现 (8)(一)服务端设计 (8)(二)客户端设计 (9)(三)辅助类设计 (10)五、系统运行结果 (11)六、结论与总结 (13)(一)课程设计结论 (13)(二)课程设计总结与体会 (14)七、附录 (15)一、前言Java课程设计是运算机科学与技术专业学生必做的集中实践性环节之一,是学习完《Java程序设计》课程后进行的一次全面的综合练习。
其目的在于通过课程设计,能够取得较系统的技术训练,从而巩固和加深对Java 编程的基础理论知识的理解,提高综合运用所学理论解决实际问题的能力,成为具有扎实的运算机理论基础和较强的独立动手能力的复合型、应用型人材。
二、课题概述、课题概述现今社会,网络技术愈来愈进展,能够说,二十一世纪就是网络的世纪。
网络迅猛进展,势不可挡。
为了实现资源共享,各式各样的网站进展迅速,各类各样的聊天工具不断更新。
本次课程设计选择一个以JAVA语言实现一个基于Socket的网络聊天室程序。
本系统提供一个网络交互平台,各用户之间能够实时方便的传递信息,能够在聊天室里实现群聊。
本系统主如果利用JAVA语言基于Socket通信机制制作的一个聊天室,采用的是客户/服务器。
二层的C/S结构是指以单一的服务器和局域网为核心,能通过客户端与用户进行直接对话。
为利用户能直观地进行操作,一般要利用图形用户接口(GUI),操作简单、易学易用。
在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他。
基于Socket仿微信系统网络应用课程设计报告

(计算机学院)网络应用课程设计报告题目:基于Socket仿微信系统专业名称:网络工程1101班级:学生姓名:学号(8位):指导教师:设计起止时间:2014年6月16日~2014年6月27日一. 设计目的1.掌握网络应用设计的方法和步骤;2.掌握用户需求分析的方法和设计文档的编制方法;3.掌握应用开发辅助软件的使用方法;4.掌握数据库设计方法;5.掌握通信协议的特点,消息格式设6.掌握软件测试的基本流程。
二. 设计内容随着网络的快速发展,社交网站也变得越来越普及,人们不必再去花费大量的时间和精力去参加社交活动所,只要通过互联网便可拥有自己的朋友圈。
仿微信系统基于Socket实现C/S架构完成系统搭建,安卓端作为客户端,服务器端采用多线程响应每个客户端,在服务器端有用户注册到数据库,存储转发客户端相关消息。
客户端界面与功能完成微信官方客户端的部分常用功能,包括语音实现,消息实现,图片实现等。
主要完成一个具有实用价值的网络应用程序,该应用中应包括:图形化界面、套接字通信、多线程处理、相应的业务处理逻辑等。
对于该系统:第一,通讯基础模块的快和省。
手机社交产品种类很多,包括手机IM、SNS、图片分享、位置交友等。
而这些社交产品都有一共同的功能:通讯,这是手机社交产品最为基础的功能。
而用户对通讯的要求非常简单,那就是要快和省。
因此所有手机社交类产品开发准则第一条就是:通讯基础模块的快和省。
如果没有这一基础,其他的功能都妄谈。
第二,交互设计要轻和简洁由于社交类应用,都牵扯到用户的交互,而交互的设计必须轻和省。
所谓轻,就是要尽可能减少产品的层次,最好只有一层,并可以通过滑动触控迅速在各功能之间切换;所谓省,就是要求一步可以完成的操作,不要让用户做2步。
目前,新浪微博手机客户端的交互就存在很大问题。
由于评论与转发分别提醒用户,导致一个内容用户看2次,刷新2次微博,浪费时间和流量,没有做到轻;而评论功能,则需要做2步才可以完成,没有做到省。
计算机网络课程设计报告--聊天程序

计算机网络课程设计报告题目:网络聊天程序的设计与实现姓名:申超明学号:0705010313班级:计算机3班指导老师:文宏湖南科技大学计算机科学与工程学院2010年9月一:实验名称网络聊天程序的设计与实现二:实验目的了解Socket通信的原理,并通过程序实现通信的过程。
三:实验要求熟悉Socket程序通信过程,熟悉在通信过程中流之间的转换。
程序中熟悉灵活运用线程执行相关操作。
四:实验原理Socket通信的原理还是比较简单的,它大致分为以下几个步骤。
服务器端的步骤如下:建立服务器端的Socket,开始侦听整个网络中的连接请求。
当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的连接。
当完成通信后,服务器关闭与客户端的Socket连接。
客户端的步骤如下:建立客户端的Socket,确定要连接的服务器的主机名和端口。
发送连接请求到服务器,并等待服务器的回馈信息。
连接成功后,与服务器进行数据的交互。
数据处理完毕后,关闭自身的Socket连接。
五:程序截图:图1-服务器端启动服务器图2-客户端连接数据库图3-客户端发送消息图4-服务器段接收客户端发送过来的消息六:程序代码:Qserver.csusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using ;using .Sockets;using System.Threading;namespace WindowsApplication2{public partial class qserver : Form{public qserver(){InitializeComponent();}private string ipv4;private void Form1_Load(object sender, EventArgs e){IPAddress[] ip = Dns.GetHostAddresses(Dns.GetHostName());ipv4 = ip[0].ToString();bel4.Text = ipv4;}TcpListener tcpls;Socket sk;NetworkStream ns;StreamReader sr;StreamWriter sw;Thread tred;private void button1_Click(object sender, EventArgs e){tcpls = new TcpListener(1235);tcpls.Start();MessageBox.Show("服务器已启动");this.button1.Enabled = false;sk = tcpls.AcceptSocket();MessageBox.Show("客户端已连接");ns = new NetworkStream(sk);sr = new StreamReader(ns, Encoding.UTF8);sw = new StreamWriter(ns, Encoding.UTF8);}string smessage = "";private void button2_Click(object sender, EventArgs e){this.textBox1.Focus();tred = new Thread(new ThreadStart(this.acceptcm));tred.Start();this.textBox2.Focus();}private void button3_Click(object sender, EventArgs e){sendtoc();this.textBox2.Focus();}private void textBox2_KeyPress(object sender, KeyPressEventArgs e) {if (e.KeyChar == '\r')sendtoc();}private void acceptcm(){lock (this){try{if (sr.ReadLine() != null){this.textBox1.Text += sr.ReadLine();}elsereturn;}catch (System.Exception ex){}finally{tred.Abort();}}}public void sendtoc(){try{smessage = "\r\n" + this.textBox3.Text + "(" + DateTime.Now.ToLongTimeString() + ")" + " " + this.textBox2.Text;this.textBox1.Text += smessage;this.textBox2.Clear();sw.WriteLine(smessage);sw.Flush();}catch{MessageBox.Show("服务器端错误");}}private void qserver_FormClosed(object sender, FormClosedEventArgs e){if (tcpls != null)tcpls.Stop();//if (tred != null)// tred.Abort();Application.Exit();}}}客户端代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using ;using .Sockets;using System.Threading;namespace Client{public partial class qclient : Form{public qclient(){InitializeComponent();}TcpClient tcpct;NetworkStream ns;StreamReader sr;StreamWriter sw;Thread trdc;/// <summary>/// 连接服务器操作,发送socket请求/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){try{string ip = this.textBox4.Text + "." + this.textBox5.Text + "." + this.textBox6.Text + "." + this.textBox7.Text;tcpct = new TcpClient(ip, 1235);ns = tcpct.GetStream();sr = new StreamReader(ns);sw = new StreamWriter(ns);this.button1.Enabled = false;}catch{MessageBox.Show("请确认是否开启服务器...");}}string cmessage = "";/// <summary>/// 发送消息事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click(object sender, EventArgs e){try{sendtos();}catch{// MessageBox.Show("出错啦!"+"\r\n"+"1.你是否已经连接服务器?"+"\r\n"+"2.等待服务器发回消息.");}finally{this.textBox2.Focus();}}/// <summary>/// 发送函数/// </summary>public void sendtos(){if (this.textBox2.Text == "") //发送{MessageBox.Show("内容不能为空");return;}else{cmessage = "(" + DateTime.Now.ToLongTimeString() + ")" + "\r\n" + this.textBox3.Text + this.textBox2.Text;this.textBox1.Text += cmessage;this.textBox2.Clear();// savechathistrory();sw.WriteLine(cmessage);sw.Flush();}}/// <summary>/// 接收函数/// </summary>public void acceptsm(){lock (this){try //接收{this.textBox1.Text += sr.ReadLine() + "\r\n";// savechathistrory();}catch{// MessageBox.Show("出错啦!" + "\r\n" + "1.你是否已经连接服务器?" + "\r\n" + "2.没有服务器消息.");}finally{trdc.Abort();}}}/// <summary>/// 接收消息事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button3_Click(object sender, EventArgs e){this.textBox1.Focus();trdc = new Thread(new ThreadStart(acceptsm));trdc.Start();this.textBox2.Focus();}/// <summary>/// 保存历史记录,未做./// </summary>private void savechathistrory(){StreamWriter fsw = new StreamWriter(erAppDataPath + "chathistory.txt", false, Encoding.UTF8);sw.WriteLine(this.textBox1.Text);fsw.Flush();fsw.Close();}/// <summary>/// 文件关闭之后,关闭客户端,关闭活动的线程/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void qclient_FormClosed(object sender, FormClosedEventArgs e){if (tcpct != null)tcpct.Close();Application.Exit();}/// <summary>/// 历史记录查看,未做。
c#实现网络聊天室(socket)仿QQ课程设计报告书

Visual C#程序设计课程设计(报告)题目: 网络聊天室专业班级:地信131 学生:胡宏勇学号: 1220130912 完成时间:_________ 2015.7.12______________________任务书项目四网络聊天室4.1、目的与要求1. 目的:1)要求学生达到熟练掌握.NET基本结构以及C#语言的基本知识和技能;2)基本掌握面向对象程序开发的基本思路和方法;3)掌握网络程序开发的基本知识;4)能够利用所学的基本知识和技能,进行简单的网络通信程序设计。
2. 要求基本要求:1)要求利用C#的编程思想以及套接字开发原理来完成系统的设计;2)突出C#语言与其它语言不同点(即体现C#的高级功能,如属性概念、接口、事件、委托等);3)体现可视化编程基本东西,如系统带有菜单、工具栏、状态栏以及一些常用的高级控件。
创新要求:在基本要求达到后,可进行创新设计,如加入文件传输功能,以及远程控制功能。
4.2、信息描述有关该系统基本信息的描述,如:客户端实例的信息等。
类似于QQ。
4.3、功能描述1. 聊天室服务器端的创建。
2. 聊天室客户端的创建。
3. 实现客户与服务器的连接通讯。
4. 实现客户之间的私聊。
5. 实现客户端的在线信息显示。
6. 实现服务器端当前在线客户信息。
7. 保存谈话记录。
4.4、解决方案1. 首先进行需求分析,搞清楚系统功能和任务。
2. 然后总体设计中确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。
确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。
3. 详细设计中为每个模块确定采用的算法,选择适当的工具表达算法的过程(流程图),描述模块的详细过程;确定每一模块使用的数据结构;确定模块接口的细节,包括对系统外部的接口和用户界面,对系统部其它模块的接口。
4. 依据分析编写C#代码。
目录1.需求分析 - - - - - - - - - - - - - - - - - - - - 1 1.1 摘要1.2 系统开发背景1.3聊天软件的开发目标2.概要设计 - - - - - - - - - - - - - - - - - - - - 22.1 服务器端2.2 客户端3.详细设计 - - - - - - - - - - - - - - - - - - - - 34.编码 - - - - - - - - - - - - - - - - - - - - 64.1 服务器端核心编码4.2 客户端核心代码5.调试分析 - - - - - - - - - - - - - - - - - - - 186.用户使用说明 - - - - - - - - - - - - - - - - - 277.课程设计总结 - - - - - - - - - - - - - - - - 288.参考文献 - - - - - - - - - - - - - - - - - - - 281.需求分析1.1摘要作为除电视、报纸、广播之外的第四大媒体,互联网不仅成为人们获取新闻信息的主要来源,更成为了人们闲暇之余的一种休闲手段。
socket网络课程设计报告

计算机网络课程设计报告网络连天程序的设计与实现姓名:李坚学号: 0855010206班级:计算机002指导老师:文宏湖南科技大学计算机科学与工程学院2011年9月一、课程设计题目利用Windows Socket编程实现局域网的聊天程序,要求能实现消息的发送和接收,以及聊天软件的细节问题。
二、题目分析拿到题目之后先来了解windows socket连接的过程与相关的API 函数。
按照题目的要求,我简单的分析了下并做了初步的设计:利用tcp协议建立连接,这样服务器和客户端分离,服务端先启动并监听端口,客户端启动之后连接服务端建立连接,接着收发聊天信息。
当任意一方连接断开的时候给出适当的提示并结束程序。
因为功能比较简单,所以设计起来还是比较容易的。
实际的操作中我遇到了很多新奇的问题并通过一些方案修改或者实现了最终的功能。
三、设计步骤1、熟悉网络编程概念以及一些基本知识2、在windows 的编程环境下熟悉了常用socket函数3、先整体再局部顺序设计程序4、调试并修改程序,使之实现设计要求5、测试程序,从中找出程序缺陷和可改进内容6、重复修改和测试,以达到自己理想的功能7、程序评定测试8、撰写设计报告四、设计过程第一个版本并未实现收发同步,只是简单的阻塞式通信。
因为没有用到多线程,所以在程序监听网络数据写入时不能监听键盘输入,所以只能发一条后接一条,其中的问题可想而知。
第二个版本用多线程实现了同时收发问题,在连接建立后新建一个线程用来等待键盘输入,而主体线程等待网络输入,当网络输入错误时(连接断开),结束线程并作下一步处理。
这个版本就上个版本改进很多,主要可以即时在屏幕输出接收到的消息,同时也出现了另外一个缺陷:当键盘输入到一半时程序收到了网络的信息,这个时候程序的做法是直接输出这条信息,这导致我们键盘输入的信息被切断,很不人性化。
第三个版本,也就是目前评测的版本,这个版本利用临界值来锁定屏幕资源,让程序在同一时刻只能一个程序拥有屏幕控制权,这样保证了不会交叉显示。
软件工程课程设计报告Socket聊天系统

目录1.前言 (4)2.需求分析 (5)系统的功能需求 (5)点歌 (5)分组管理 (5)个人信息管理 (5)…用户管理 (5)视频通话 (5)非功能需求: (5)网络安全 (5)用例分析 (6)参与者 (6)用例分析 (6)系统的用例图 (6)^3.总体设计 (8)服务器设置 (8)分析类图 (9)顺序图 (10)用户私聊顺序图 (10)用户传送文件序列图 (11)协作图 (11)用户私聊协作图 (11)>用户传送文件协作图 (12)4.详细设计 (14)客户端设计 (14)服务端设计 (14)多线程设计 (15)5.代码实现 (16)服务端设计 (16)客户端设计 (18)—多线程 (22)服务端多线程 (22)客户端多线程 (24)6.运行与测试 (25)用户登录界面 (25)输入端口界面 (25)服务器记录,在线的用户信息。
(26)私聊 (26)#登录 (26)用户给指定的好友发送信息。
(私聊) (27)指定好友接受到好友信息。
(私聊的信息) (27)好友回复我的信息 (28)群聊 (28)发送群消息 (28)好友响应并接受群聊信息 (29) (29)|7. 小结 (30)8.参考文献 (31)…1.前言-随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。
目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。
该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。
前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。
后者通过与服务器建立连接,来进行客户端与客户端的信息交流。
其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。
开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。
基于SOCKET技术网络即时通讯软件设计及实现

目录摘要 (1)1 前言 (1)2 可行性研究 (2)2.1开发背景 (2)2.2技术可行性分析 (2)2.3面临问题及现状 (2)2.4开发目的及意义 (3)2.5.1运行环境 (3)2.5.2性能要求 (3)3 需求分析 (3)3.1系统总体功能 (3)3.2开发工具以及使用的主要技术简介 (4)3.2.1数据库Microsoft SQL2000简介 (5)3.2.2 eclipse简介 (6)3.3客户机/服务期(C/S)工作原理 (7)3.4套接字(SOCKET)原理图 (8)3.5系统逻辑模式 (8)3 概要设计 (9)3.1客户端 (10)3.1.1 用户注册功能模块 (10)3.1.2发送消息功能模块 (11)3.1.3查找好友功能模块 (11)3.1.4 添加好友模块 (11)3.1.5删除好友模块 (12)3.1.6修改个人信息模块 (12)3.2服务器 (12)3.2.1用户登录模块设计 (13)3.2.2新用户注册模块设计 (14)3.2.3查找网友模块设计 (15)3.2.4添加好友模块设计 (16)3.2.5 用户之间发送数据模块设计 (17)3.3数据库设计 (18)3.3.1数据库结构设计 (19)3.3.2数据表设计 (19)3.3.3 数据字典 (21)(1) 聊天信息字典 (21)4 详细设计 (22)4.1服务器端 (22)4.1.1服务器建立和启动模块 (22)4.1.2 数据库交互模块 (23)4.1.3 处理客户端请求模块 (25)4.1.4 异常处理模块 (25)4.2客户端 (25)4.2.1 客户端与服务器建立连接模块 (25)4.2.2 用户登陆模块 (26)4.2.3 注册模块 (26)4.2.4 通讯模块 (27)4.2.5 聊天模块 (28)4.2.6 查找好友模块 (29)4.2.7个人信息模块 (30)5 总结 (32)参考文献 (33)致谢.......................................... 错误!未定义书签。
基于SOCKET的多客户端网络聊天系统的开发与设计

基于SOCKET的多客户端网络聊天系统的开发与设计网络聊天系统可以通过使用SOCKET编程实现多客户端之间的实时通信。
在开发和设计过程中,需要考虑以下几个方面:网络通信的架构、传输协议的选择、服务器的实现、客户端的实现以及系统的安全性。
首先,网络通信的架构是设计网络聊天系统的重要一步。
在基于SOCKET的多客户端网络聊天系统中,可以选择使用C/S(Client/Server)架构或者P2P(Peer-to-Peer)架构。
C/S架构中,客户端作为请求方,向服务器发送请求,而服务器负责处理这些请求并相应被请求的结果。
P2P 架构中,客户端之间可以直接进行通信,不存在中心服务器的概念。
根据实际需求和系统规模选择适合的架构。
其次,传输协议的选择是系统开发中的关键。
在基于SOCKET的网络聊天系统中,可以选择使用TCP传输协议或者UDP传输协议。
TCP传输协议可确保数据的可靠传输,但相应的延迟也较大;UDP传输协议具有较小的延迟,但数据传输不可靠。
根据实际需求,选择合适的传输协议。
接下来,需要实现服务器的功能。
服务器端可以使用多线程或者多进程来处理多个客户端的连接请求和消息传递。
服务器需要维护客户端的连接状态,并转发客户端之间的消息。
服务器还需要处理客户端的注册、登录、退出等功能,并管理用户信息。
同时,客户端的实现也是网络聊天系统开发过程中的一部分。
客户端需要提供用户界面,以便用户进行注册、登录、发送消息、接收消息等操作。
客户端需要与服务器进行通信,接收服务器转发的消息,并发送用户输入的消息给服务器。
最后,为了保证网络聊天系统的安全性,可以采取一些安全措施。
比如,使用加密算法对消息进行加密,确保消息的机密性;设置访问控制机制,限制未授权用户的访问;对用户输入的内容进行过滤和验证,防止恶意信息的传递。
总结起来,基于SOCKET的多客户端网络聊天系统的开发与设计需要考虑网络通信的架构、传输协议的选择、服务器的实现、客户端的实现以及系统的安全性。
基于Socket的网络聊天系统的开发与设计

编号本本科生毕业设计基于Socket的网络聊天系统开发与设计Development and Design of Networkchat System Based onthe Socket学生姓名张小好专业计算机科学与技术学号1141229指导教师陈晨分院信息工程分院2015年6月摘要在信息技术高速发展的今天,Internet技术的发展已经深刻的改变了人们的生活。
摒弃了原始的通信方式,开发新的通信方式是必不可少的,人们希望用更方便、更廉价、更快捷的通信方式。
这时就需要开发一套网络聊天系统,本课题研究的是基于SOCKET通讯协议的网络聊天系统的开发与设计。
本次开发使用的是JA V A语言,文中介绍了本系统的结构和功能,最终实现可以私聊、群聊、文件传送的网络聊天系统。
本次设计主要以Socket网络通讯作为基础,采用Swing来实现的图形界面。
关键词:Java Socket 通讯协议SwingAbstractIn the information technology rapid development today, the development of Internet technology has profoundly changed people's life. Abandoned the original way of communication, the development of new communication mode is indispensable, people want to use more convenient, cheaper and faster way of communication. Then you need to develop a set of network chat system, this research is based on the SOCKET of network chat system development and design.The development using the JAVA language, this paper introduces the structure and function of this system, finally can private chat, group chat, file transfer network chat system. This design mainly Socket network communication as the foundation, the Swing technique was used to realize the graphical interface.Keywords:Java Socket Communication protocol Swing目录目录 (I)绪论 (1)选题的背景和意义 (1)第一章系统所涉及到的技术 (2)1.1J A V A语言概述 (2)1.1.1 Java语言的起源 (2)1.1.2Java语言的发展前景 (2)1.1.3 Java的语法 (2)1.2S OCKET编程 (3)1.3TCP/IP协议 (4)1.3.1 TCP/IP参考模型 (4)1.3.2 网间协议IP (5)1.3.3 传输控制协议TCP (5)1.4S WING简介 (6)1.5多线程技术介绍 (7)1.5.1在Java中实现多线程。
基于socket的网络聊天室

《JA V A程序设计》课程设计报告院系题目基于socket 的Client/Server监听模式学生姓名学生学号专业班级指导教师完成时间(空2行)目录1 需求分析 (1)2 系统设计……………………………………………………………………Y 2.1 界面模块设计…………………………………………………………Y 2.2 用户客户端登录验证设计……………………………………………Y 2.3服务器模块设计…………………………………………………………Y 2.4客户端模块设计…………………………………………………………Y2.5数据传输加密设计…………………………………………………………Y3 实现……………………………………………………………………Y 3.1 界面模块实现…………………………………………………………Y 3.2 用户客户端登录验证实现……………………………………………Y 3.3服务器模块实现…………………………………………………………Y 3.4客户端模块实现…………………………………………………………Y 3.5 数据传输加密实现…………………………………………………………YX ×××××(正文第X章)…………………………………………………Y 结论………………………………………………………………………………Y 参考文献…………………………………………………………………………Y 附录A 源代码(必须)………………………………………………………Y正文部分:1 需求分析现在网络通信应用的很广泛,几乎所有应用都基于网络实现通信。
而要实现异地的网络通信,尤其是C/S结构的软件,使用套接字的网络编程是实现双方通信的基础。
本课程设计就是基于Java TCP客户端和服务器、UDP组播实现的群聊。
1.1 基本功能需求以下三点是本课程设计的基础功能实现,即要完成基本的客户端-服务器的连接通信。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算机网络课程设计报告》学院:计算机科学学院专业:计算机科学与技术班级:08级01班姓名:学号:小组成员:ABCDEF2011-7-13项目内容:基于Socket的网络聊天系统的设计与实现实验目的:基于Socket套接口,实现网络聊天系统的设计与实现,让我们掌握Socket的编程技术及网络服务的技术,让同学们更加深刻的了解,并掌握这方面的知识。
实验环境:操作系统:windows2000或windows2003;内存:256M以上;基于eclipse的JAVA运行环境。
设计方案:首先,我们知道此应用软件需实现网络中多台主机的信息互通,实现语言文字得互聊,因此涉及到主机网络互联的问题,所以必须会应用到网络协议,可以用UDP或TCP。
其次,既然要求设计基于Socket的网络聊天系统,那就必须对Socket有一个充分的了解。
最后,不管运用何种语言设计此程序,都要求对该语言有一个透彻的了解,并能运用自如。
实现流程:启动电脑,打开能运行该程序的环境,必须保证代码的正确性;进行窗体框架的设计,实现网络连接,并达到网络聊天的功能;在以上步骤的成功进行下达到设计要求的基于S o c k e t s的局域网内聊天系统的函数实现的目的。
结果及分析:程序运行以后,经过局域网内测试,实现了在局域网内的好友添加,聊天等功能,基本上完成了本实验的全部要求。
但由于时间仓促,再加上本人水平有限,对这方面的知识还有所欠缺,经过这次课程设计,对此有了一个很大的提高。
源程序;一 Client端程序代码package wangluo;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.DataInputStream;import java.io.DataOutputStream;import javax.swing.JFrame;import javax.swing.JTextField;public class Client implements ActionListener {private JTextField jtf = new JTextField("", 20);JFrame jf = new JFrame("不用注册直接登陆");public Client() {jf.setLayout(new BorderLayout());jf.add(jtf, BorderLayout.NORTH);jtf.addActionListener(this);jf.pack();jf.setLocation(500, 300);jf.setResizable(false);jf.setVisible(true);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}@Overridepublic void actionPerformed(ActionEvent e) {jf.dispose();new ThreadClient(jtf.getText());}public static void main(String[] args) {new Client();}}二ThreadClient端程序代码:package wangluo;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.DataInputStream;import java.io.DataOutputStream;import .Socket;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;public class ThreadClient extends Thread implements ActionListener { private String name = "";private int a;private JTextField jtf = new JTextField("", 25);private JTextArea jta = new JTextArea(30, 40);private DataOutputStream dos;private DataInputStream dis;private Socket s;public ThreadClient(String temp) {=temp;JFrame jf = new JFrame("聊天界面");jf.setLayout(new BorderLayout());JButton jb = new JButton("发送");JPanel jp = new JPanel();jta.setLayout(new GridLayout(1, 2));jp.add(jtf);jp.add(jb);jf.add(jp, BorderLayout.NORTH);jf.add(jta);jb.addActionListener(this);jtf.addActionListener(this);jf.pack();jf.setLocation(450, 200);jf.setVisible(true);jf.setSize(400, 350);try {s = new Socket("127.0.0.1", 1024);dos = new DataOutputStream(s.getOutputStream());dis=new DataInputStream(s.getInputStream());dos.writeUTF("<1.1>");dos.writeUTF(name);System.out.println("heh");} catch (Exception e) {e.printStackTrace();}jf.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {try {dos.writeUTF("<1.4>");Thread.sleep(2000);dis.close();dos.close();s.close();} catch (Exception e1) {e1.printStackTrace();}System.exit(1);}});this.start();}@Overridepublic void run() {while(true){try {Thread.sleep(3000);dos.writeUTF("<1.3>");jta.setText(dis.readUTF());} catch (Exception e) {break;}}}@Overridepublic void actionPerformed(ActionEvent ae) { String comn=jtf.getText();if(!"".equals(comn)){try {dos.writeUTF("<1.2>");dos.writeUTF(comn);jtf.setText("");jtf.requestFocus();} catch (Exception e) {e.printStackTrace();}}}}三ThreadServer端程序代码:package wangluo;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import .ServerSocket;import .Socket;public class ThreadServer extends Thread {//private StringBuffer message = new StringBuffer();private static String message="";private Socket s;private String name="";public ThreadServer(Socket s) {this.s = s;}public void run() {try {DataOutputStreamdos=new DataOutputStream(s.getOutputStream());DataInputStream dis=new DataInputStream(s.getInputStream());while (true) {String temp=dis.readUTF();if("<1.1>".equals(temp)){name=dis.readUTF();message="欢迎"+name+"进入!"+"\n"+message;}else if("<1.2>".equals(temp)){message=name+"说:"+dis.readUTF()+"\n"+message;}else if("<1.3>".equals(temp)){dos.writeUTF(message);}else if("<1.4>".equals(temp)){message=name+"离开"+"\n"+message;break;}}dos.close();dis.close();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(1024);while (true) {Socket s = ss.accept();new ThreadServer(s).start();}}}安装演示说明详细步骤:首先将自己所在电脑作为服务器端,在JAVA环境下运行该程序,出现以下页面:再在光标所示位置输入用户名称,或直接按回车键进入聊天界面:再将其他主机作为客户端,与服务器所在的主机进行连接,成功后界面如下:在输入框中输入要发送的信息,点击发送如上所示,本实验演示完毕。