文档库 最新最全的文档下载
当前位置:文档库 › 用VB设计网络聊天室

用VB设计网络聊天室

用VB设计网络聊天室
用VB设计网络聊天室

用VB设计网络聊天室

第1章课程设计的目的

1.加深对计算机网络通信系统的工作原理的理解

通过编写计算机程序模拟网络通信的某些功能,理解并掌握网络通信系统的基本工作原理及工作过程。

2.提高网络应用的能力

学会运用网络语言以及网络协议设计小型网络。能对小型的网络应用系统进行分析,并能提出建网解决方案。

第2章课程设计分析及要求

2.1 网络协议

Internet 上的通讯协议是TCP/IP,Internet 上数据传输协议主要有TCP 和UDP,TCP 是有连接协议,它要求计算机进行对话时必须先建立连接,保证数据传送安全到达目的地。UDP 是无连接协议,它只是将信息送到网络上,并不检查数据是否到达了目的地。要进行实时会话,则应该采用TCP 协议。本程序采用的协议就是TCP 协议。

2.2 程序组成及简单原理介绍

程序分为服务器端和客户端两部分。由于本应用程序使用TCP协议,因此决定应用程序是服务器端程序。那么应用程序需要监听指定的端口。客户端程序启动后首先与服务器建立连接,连接成功后,输入对方IP地址即可进入聊天室;服务器端程序则负责维护与每一个客户的连接和数据交换,并且记录下所有聊天内容,及人员名单。如果服务器程序关闭,则所有客户程序自动关闭。

2.3 Winsock通信过程

1.Winsock 控件

要实现两台计算机的对话,可以通过Winsock 控件进行。而不需了解更多的数据传输细节,本程序就是通过Winsock 进行的。

Winsock 有多种属性、方法和事件,本文只列举出要使用的属性、方法和事件。BytesReceived 属性:返回接收到的(当前在接收端缓冲区内)数据的数量。使用GetData 方法来获得数据。

LocalHostName属性:返回本地计算机名。在设计时是只读的,而且是不可用的。LocalIP属性:返回本地机器的IP地址。在设计时是只读的,而且是不可用的。LocalPort属性:返回或者设置所用到的本地端口。

RemoteHostIP属性:返回远程机器的IP地址.

Protocal属性:返回或设置WinSock控件所使用的协议——TCP或UDP。

State属性:返回控件的状态,用枚举型表示。在设计时是只读的,而且是不可用的。SocketHandle属性:返回一个与套接字句柄对应的值,控件用套接字句柄同WinSock层通信。在设计时是只读的,而且是不可用的。

Accept方法:仅适应于TCP服务器应用程序。在处理ConnectionRequest时使用这个方法接受新连接。

Bind方法:指定用于TCP连接的LocalPort和LocalIP。如果有多协议适配卡,就用这个方法。

Close方法:对客户机和服务器应用程序关闭TCP连接或侦听套接字。

Listen方法:创建套接字并将其设置为侦听模式。仅适应于TCP连接。

PeekData方法:不从输入队列删除数据,除次之外与GetData相似。该方法仅适用于TCP 连接。

SendData方法:将数据发送给远程计算机。

Close事件:当远程计算机关闭连接时出现。应用程序应正确使用Close方法关闭TCP连接。

ConnevtionRequest事件:当远程计算机请求连接时出现。

DataArrival事件:当新数据到达时出现。

SendComplete事件:在完成一个发送操作时出现。

Error事件:无论何时,只要后台处理中出现错误事件就会出现。

Connect事件:当一个Connect操作完成时发生。

2.聊天室程序应该包括一个服务器程序和若干个客户端进程,设计时应分别设计客户端程序和服务器端程序。

首先设计一个客户端应用程序,窗口及其包括的控件如图所示,各控件属性如表所示。在此之前应首先在Projict/Components页面中选择Microsoft Windows

1.服务器端

一个Winsock 控件可以建立与一个计算机的联接,服务器程序中首先设置一个Winsock 控件,将其索引值设为0,以便在运行时动态增减元素,这样可以与多个计算机进行对话。

服务程序部分服务器程序启动时,先设置自己的本地端口,因为有些端口有其固定的作用,如80 是WWW 端口,故尽可能选择不可能使用的端口,这里我选择了1001。将连接状态设置为假,然后开始进行侦听。当侦听到有计算机要求与服务器进行对话,就

接受,并记录下客户机的地址、端口、客户起的匿名,将连接状态设置为真,将上述内容存入一个用户自定义的数组中,进行动态维护。用户自定义数据类型如下:

Private Type ActiveUser ClientIP As String 记录客户的IP地址

ClientName As String 记录客户的匿名

ClientPort As Integer 记录当前会话的端口

ClientConnected As Boolean客户连接状态,True表示已连接,False表示没有连接End Type

做完这些工作后,服务器再调入一个新控件,进行新的侦听,如此反复不断。如果有客户退出,则关闭相应的连接。注意不能在客户端关闭连接,否则会产生错误,只能由服务器关闭连接。

服务程序中三个关键程序段如下:处理连接请求sckServer_ConnectionRequest 过程处理连接请求,当远程计算机要求连接时,服务器首先检查用户自定义数组中是否有空闲位置(因为在谈话中途,肯定会有人退出,所以会产生空闲位置),如果有则选择空闲位置给予要求连接的客户,否则将数组维数加一,将之给予请求连接的远程节点。错误处理主要是忽略两个或两个以上的客户同时要求连接时产生的地址冲突现象。

处理处于连接状态的用户发送来的信息sckServer_DataArrival 过程处理客户端

传来的数据。当有数据发送过来后,服务器首先接收数据,调用自定义过程HandleOth- erMessage 检查是谈话内容还是其它信息,如果是其它信息,则在HandleOtherMessage 中进行处理,否则在本过程中进行处理。

因为Winsock 控件将数据首先送至缓冲区,待缓冲区满才发送信息,这显然不能保证适时对话,用Doevents 语句可确保Windows 将数据及时送出。其中的错误处理程序处理当远程计算机非正常关闭程序时产生的错误,因为此时服务器并不知道它已关闭,仍然向它发送信息,这样就会产生错误,导致服务程序关闭,中断整个谈话。处理方法只是简单地关闭掉该连接即可。

关闭客户连接sckServer_Close 过程关闭与客户的连接,删除控件,收回系统资源,将该位置的连接状态设置为假,以便有用户请求连接时继续使用。它一般由HandleOtherMessage 过程调用。

2.客户端

客户端程序启动时首先设置服务器的地址及端口,这里我直接使用了“192.168.1.8 6”,这是我的服务器地址,可以在Form_load 过程中设置你自己的服务器地址,也可在程序开始时让用户输入服务器地址以增加灵活性。时钟控件用以与远程节点进行自动连接。

客户程序主要对象设置

“”显示所有正在聊天室中的用户名显示当前的状态(用户名,IP 地址及是否密谈)。与服务器程序一样,这里列出的并非全部的控件,但是已经足以完成工作。客户程序中的自定义类MyMessage 用来记录自己的信息。

类中的变量cmdExitClick 用来记录用户是否按了退出按钮,如果是按了退出按钮则为真。当用户选择了系统的窗体关闭菜单而没有按退出按钮时将会产生错误,因此用它来记录是如何退出的,如果选择了系统的窗体关闭菜单,则执行一次cmdExit_Click ()过程,以确保无误。

客户退出时,不是简单地关闭自己的Winsock 控件,而是发送一个字符串(我采用了一个大家在聊天时很难用到的字符串“=_RE”)给服务器,表明自己要退出,由服务器端关闭连接,进而关闭自身。

第3章TCP协议相关知识

TCP/IP协议(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网络协议)是Internet最基本的协议。TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。

TCP/IP中的协议

1.IP

网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。

IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。

2.TCP

如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

第4章程序设计界面

在编写VB程序之前首先设计两个用于聊天的程序窗口,一个是服务器端,一个是客户端,按照该窗口的相应位置编写程序。

窗口如下:

图1客户端图2服务器端

第5章程序设计实现代码

客户端程序代码如下:

Option Explicit

Private bConnected As Boolean

Private Const FormSpace=50

Private Sub Form_Load() //初始化窗口sktTCPChatClient.RemoteHost=sktTCPChatClient.LocalHostName //设置远程计算机bConnected=False //没有连接cmdSendData.Enabled= False //不能发送数据sbWinsonkState.Panels(1)=”你的IP地址是”& sktTCPChatClient.LocalIP

End Sub

Private Sub cmdConnect_Click()

Dim Message,Title,Default, Myvalue

If bConnected Then //处理已连接sbWinsonkState.Panels(1)=”断开连接”

cmdSendData.Enabled=False //不能发送数据cmdConnect.Enabled=False //不能连接sktTCPChatClient.SendData “QUIT” //向服务端发送退出指令Else //没有连接时创建连接sktTCPChatClient.Close //首先关闭TCP连接

Message=”输入服务端IP地址或主机名,缺省时为本机IP地址:&sktTCPChatClIen-

t.LocalIP //设置提示信息

Title=”设置服务端地址” //设置标题

Default=sktTCPChatClient.LocalIP //设置缺省IP地址

Myvalue=InputBox(Message,Title,Default) // 输入服务端IP地址

If Myvalue=””ThenMsgBox”需要输入IP地址”

Else

sktTCPChatClient.RemoteHost= Myvalue

sktTCPChatClient.Connect //连接服务器

sbWinsonkState.Panels(1)=”正在连接…服务器IP地址:”&sktTCPChatClient.Remot cmdConnect.Enabled=False

DoEvents //处理事件

Loop Until sktTCPChatClient.State=sckConnected_

Or sktTCPChatClient.State=sckError

If sktTCPChatClient.State= sckError Then //处理例外

cmdConnect.Enabled=True

sbWinsonkState.Panels(1)=”找不到主机” & sktTCPChatClient.RemoteHost MsgBox sktTCPChatClient.RemoteHost &”服务器端没有运行。请首先运行服务器进程‘服务器端’!”

Else

cmdConnect.Caption=”断开连接” //改变按钮

bConnected=True

cmdConnect.Enabled=True //能连接

cmdSendData.Enabled=True //能发送数据

End If

End If

End If

End Sub

Private Sub cmdSendData_Click()

Dim sendtext As String

Sendtext= sktTCPChatClient.LocalIP&”(主机:”& sktTCPChatClient.LocalHostName& ”端口”& sktTCPChatClient.LocalPort&”)发送:”& txtDataToSend.Text

//发送的数据sktTCPChatClient. SendData sendtext

txtDataReceived.Forecolor=200 //接收数据颜色

txtDataReceived.SelText=sendtext&vbCrLf

txtDataToSend.Text=””

End Sub

Private Sub cmdExit_Click()

Unload Me

End Sub

Private Sub Form_QueryUnload(Cancle As Integer,UnloadMode As Integer) sktTCPChatClient.Close // 关闭TCP连接

End Sub

Private Sub Form_Resize() //改变窗口大小时调整控件位置

End Sub

Private Sub sktTCPChatClient_Connect() //连接成功

If sktTCPChatClient.State=sckConnected Then

sbWinsonkState.Panels(1)=sktTCPChatClient&”成功连接到”&sktTCPChatClient. RemoteHostIP

End If

End Sub

Private Sub sktTCPChatClient_DataArrival(ByVal bytesTotal As Long)//接收数据Dim sendtext As String

sktTCPChatClient.GetData DataReceived,vbString //接收数据txtDataReceived.Forecolor=200 //接收数据颜色

txtDataReceived.SelText=DataReceived & vbCrLf //显示接收数据

End Sub

Private Sub sktTCPChatClient_Close() //处理断开连接cmdConnect.Enabled=False

cmdSendData.Enabled=False

sktTCPChatClient.Close

Do

sbWinsonkState.Panels(1)=”状态:”&WinsockStateString(sktTCPChatClient.State) DoEvents

Loop Until sktTCPChatClient.State=sckClosed

bConnected=False

cmdConnect.Caption=”连接”

cmdSendData.Enabled=True

End Sub

Private Function WinsockStateString(WinsockState As Integer) As String Select Case WinsockState

Case sckClosed

WinsockStateString=”已断开”

Case sckClosing

WinsockStateString=”同级人员正在关闭连接”

Case sckConnected

WinsockStateString=”已连接”

Case sckConnecting

WinsockStateString=”正在连接”

Case sckConnectionPending

WinsockStateString=”连接挂起”

Case sckHostResolved

WinsockStateString=”主机断开”

Case sckConnectionPending

WinsockStateString=”连接挂起”

Case sckHostResolved

WinsockStateString=”主机断开”

Case sckError

WinsockStateString=”错误”

Case sckListening

WinsockStateString=”侦听”

Case sckResolvingHost

WinsockStateString=”识别主机”

Case sckOpen

WinsockStateString=”打开”

Case Else

WinsockStateString=”未知状态”

End Select

End Function

服务器端程序代码如下:

Option Explicit

Private Type tActiveSocket

Connected AsBoolean

ClientIPAddress As String

ClientName As String

End Type

Private gActiveSockets() As tActiveSocket

Private Const FormSpace = 50

Private Sub Form_Load() //窗口初始化

ReDim gActiveSockets(0)

sktTCPChatServer(0).RemoteHost = sktTCPChatServer(0).LocalHostName

//设置远程计算机sktTCPChatServer(0).LocalPort = 1001

sktTCPChatServer(0).Listen

lb1IPAddress.Caption = ”服务器IP:”& sktTCPChatServer(0).LocalIP sbWinsockStatus.Panels(1) = ”主机名:”&sktTCPChatServer(0).LocalHostName End Sub

Private Sub Form_QueryUnload(Cancel AsInteger,UnloadMode As Integer)

Dim ArrayIndex As Integer

For ArrayIndex = 1 To UBound(gActiveSockets)

If gActiveSockets(ArrayIndex).Connected Then

sktTCPChatServer (ArrayIndex).Close

Unload sPCktTChatServer(ArrayIndex)

End If

Next ArrayIndex

End Sub

Private Sub Form_Resize() //改变窗口大小时调整设置控件位置End Sub

Private Sub cmdSendData_Click()

Dim ArrayIndex As Integer

Dim sendtext As String

If Ubound(gActiveSockets) = 0 Then

MsgBox”没有客户与服务器建立连接”

Else

For ArrayIndex = 1 To Ubound(gActiveSockets)

If gActiveSockets(ArrayIndex).Connected Then

sktTCPChatServer (ArrayIndex).SendData

sktTCPChatServer(ArrayIndex).LocalIP&_

“(主机名:” & sktTCPChatServer (ArrayIndex). LocalHostName & “端口:” & sktTCPChatServer (ArrayIndex).LocalPort &”)发送:”& txtDataToSend.Text DoEvents

End If

Next ArrayIndex

txtDataReceived.SelText = sktTCPChatServer(0).LocalIP&”(主机:”& sktTCPChatServer(0).

LocalHostName & ”端口:”& sktTCPChatServer(0).LocalPort &”)发送:”& txtDataToSend.Text &VbCrLf

txtDataToSend.Text = “”

End If

End Sub

Private Sub cmdExit_Click()

Unload Me

End Sub

Private Sub sktTCPChatServer_ConnectionRequest( Index As Integer , ByVal requestID As Long) //连接请求

Dim ArrayIndex As Integer

Dim OpenSocketPos As Integer

Dim Dummy As String

ArrayIndex = 0

OpenSocketPos = 0

Do While(OpenSocketPos = 0) And (ArrayIndex

If Not gActiveSockets(ArrayIndex).Connected Then

OpenSocketPos = ArrayIndex

End If

Loop

If OpenSocketPos = 0 Then

OpenSocketPos = UBound(gActiveSockets)+1

ReDim Preserve gActiveSockets(OpenSocketPos)

End If

Load sktTCPChatServer(OpenSocketPos)

gActiveSockets(OpenSocketPos).Connected = True

sktTCPChatServer(OpenSocketPos).Accept requestID

gActiveSockets(OpenSocketPos).ClientIPAddress=sktTCPChatServer(OpenSocketPo s).Remote-HostIP

sbWinsockStatus.Panels(1) = ”总计”&OpenSocketPos&”个客户连接到本服务器”& gActiveSockets(OpenSocketPos).ClientIPAddress

End Sub

Private Sub sktTCPChatServer_DataArrival(Index As Integer,ByVal bytesTotal As Long) //接收数据

Dim DataReceived As String

Dim ArrayIndex As Integer

sktTCPChatServer(Index).GetData DataReceived,vbString //接收数据

If CStr(DataReceived) = ”QUIT” Then sktTCPChatServer_Close Index

Else

For ArrayIndex = 1 To Ubound(gActiveSockets)

If ArrayIndex<>Index And(gActiveSockets(ArrayIndex).Connect) Then

sktTCPChatServer(ArrayIndex).SendData gActiveSockets(Index).ClientIPAddress

& “:”&DataReceived DoEvents

End If

Next ArrayIndex

txtDataReceived.ForeColor = 200 //接受数据颜色

txtDataReceived.SelText = DataReceived & vbCrLf //显示接收数据

End If

End Sub

Private Sub sktTCPChatServer_Connect(Index As Integer) //连接完成gActiveSockets(Index).Connected = True //连接成功gActiveSockets(Index).ClientIPAddress =sktTCPChatServer(Index).RemoteHostIP sbWinsockStatus.Panels(1) = “连接到” & sktTCPChatServer(Index).RemoteHostIP End Sub

Private Sub sktTCPChatServer_Close(Index As Integer) //处理断开连接sbWinsockStatus.Panels(1) = sktTCPChatServer(Index).RemoteHostIP&”断开连接”sktTCPChatServer(Index).Closed //断开TCP连接

Unload sktTCPChatServer(Index)

gActiveSockets(Index).Connected = False

gActiveSockets(Index).ClientIPAddress = ““

End Sub

Private Function WinsockStateString(WinsockState AsInteger) As String

//连接状态

Select Case WinsockState

Case sckClosed

WinsockStateString=”已断开”

Case sckClosing

WinsockStateString=”同级人员正在关闭连接”

Case sckConnected

WinsockStateString=”已连接”

Case sckConnecting

WinsockStateString=”正在连接”

Case sckConnectionPending

WinsockStateString=”连接挂起”

Case sckHostResolved

WinsockStateString=”主机断开”

Case sckConnectionPending

WinsockStateString=”连接挂起”

Case sckHostResolved

WinsockStateString=”主机断开”

Case sckError

WinsockStateString=”错误”

Case sckListening

WinsockStateString=”侦听”

Case sckResolvingHost

WinsockStateString=”识别主机”

Case sckOpen

WinsockStateString=”打开”

Case Else

WinsockStateString=”未知状态”

End Select

End Function

第6章结果分析,总结

在远程计算机上分别运行客户端与服务器端的VB程序,输入彼此的IP地址和用户名,客户端建立连接后,便可以进行简单聊天了。

步骤如下:

1.输入IP地址及姓名后,点击连接:

图3客户端

2.输入要发送的内容,点击发送:便可在对方电脑上显示发送信息,双方即可进行对话。

图4客户端1 图5客户端2

参考文献

1.《计算机网络》,第四版,谢希仁,编著,大连理工大学出版社。

2.《Visual Basic编程精选集锦》,《电脑编程技巧与维护》杂志社主编,科学出版社

3.《网络课程设计与案例赏析》陈海林清华大学出版社

4.《计算机网络实验教程》郭秋萍北京航天航空大学出版社

5.《Visual Basic 编程实例入门与提高》卢镇波电子工业出版社

JAVA代码编写一简单网络聊天程序

要求:聊天室服务器、聊天室客户端;客户端之间可以聊天。 因为我是初级选手,想借此程序分析学习java,所以代码最好多一点注释... 分数有限,望大家不吝赐教!!问题补充: 需要图形用户界面哦,最好用swing组件 服务器端:采用多线程,可以向客户广播:当前聊天室人数,客户名称列表,客户进入离开提示; 客户端:可以设定昵称,性别,客户间可以私聊 服务器端: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.wendangku.net/doc/da17332464.html,.*; public class Server extends JFrame implements ActionListener{ JPanel contentPane; JLabel jLabel2 = new JLabel(); JTextField jTextField2 = new JTextField("4700"); JButton jButton1 = new JButton(); JLabel jLabel3 = new JLabel(); JTextField jTextField3 = new JTextField(); JButton jButton2 = new JButton(); JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); ServerSocket server = null; Socket socket = null;BufferedReader instr =null;PrintWriter os=null ; //Construct the frame public Server() { jbInit(); } class MyThread extends Thread{//该线程负责接受数据 public void run(){ try{ while(true){ this.sleep(100); instr= new BufferedReader(new InputStreamReader(socket.getInputStream())); if(instr.ready()){ //检查是否有数据 jTextArea1.append("客户端: "+instr.readLine()+"\n"); } } }catch(Exception ex){} }

C+++网络聊天室设计报告和源程序

目录 1.需求分析 (2) 2.相关知识............................................... - 3 -2.1W INSOCK介绍 (3) 2.2MFC类CA SYNCSOCKET和CS OCKET (3) 2.3利用CS OCKET进行有连接的通信 (4) 3.详细设计................................... 错误!未定义书签。 3.1客户端的实现 (4) 3.2服务端的实现 (8) 4.程序运行结果.......................................... - 13 -4.1服务器端 .. (13) 4.2客户端 (13) 5.参考文献 ................................................................................................................... 错误!未定义书签。

1.需求分析 当前是数字信息时代,网络时代,任何一种编辑工具都不能忽视在网络上的应用,并且随着Internet 的普及和宽带技术的成熟,越来越多的用户进入网络世界中享用浏览新闻、查询信息、发送邮件、在线观看电影等服务,享受网络带来的便利和办公的高效,与此同时一个新型的Web应用程序为网民之间提供了一个实时通信的功能和场所,这就是聊天室。 在网络早期就开始盛行,不论是BBS,IRC 都有类似网上聊天室的机制。聊天室为网友提供了实时性对话的渠道,是网络上极为流行的一项服务。 聊天室适用于网上会议或闲聊的一些场合。聊天室为网友提供了较好的交友环境,网友之间相互以文字交谈,在形式上有点类似笔友的性质,却大大节省了书信往返的时间,这也是网上交友之所以如此热门的原因。 聊天室的设计目标 本课题是建立聊天通信模型,设计一个聊天室软件,包括服务器端和客户端,主要功能为: 服务器端功能: 1、初始化socket, 创建服务器端。 2、维护一个链表,保存所有用户的IP地址、端口信息。 3、接受用户传送来的聊天信息,然后向链表中的所用用户转发。 4、接受用户传送来的连接判断命令,并向用户发出响应命令。 客户端功能: 客户端界面上的两个文本框,一个用于显示接受的聊天信息,一个用来接受用户输入的聊天信息。当按下“发送”按钮时将信息发送给服务器。 通过本课题的毕业设计,可以比较深入的了解和掌握WINSOCK控件基本属性、方法和事件,理解网络聊天通信的概念,输控制协议(TCP)进行数据交流,初步掌握网络聊天通信程序的设计方法。并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求。

毕业设计-聊天室的设计与实现

编号: 毕业论文 题目:聊天室的设计与实现 院(系): 专业:计算机及应用 学生姓名:唐靖琳 学号: 030111301444 指导教师:李志远 职称:教授 题目类型:理论研究实验研究工程设计工程技术研究软件开发 2012年4月15日

随着Internet的普及,很多人已经不满足于仅仅上网冲浪,而希望能参与其中的开发与研究。怎样做好网页便是人们所渴望的事情。想做好一个网页就要选好工具,我的课题是聊天室的设计与制作。因此,我这里选择的开发软件是Macromedia Dreamweaver 8。Macromedia Dreamweaver 8目前作为最主流的ASP开发工具,它可以将前台界面设计和后天程序设计充分结合,包括asp等。而微软的asp和目前推广的https://www.wendangku.net/doc/da17332464.html,,是广大网页后台设计师的首选,其应在IIS服务器环境中运行并通过调用ACCESS数据库来实现。 在线聊天室是一种十分普及的动态交互系统,是一种比较直观的且容易接受的交流方式,特别对于刚刚接触的新网民,在线聊天室相对于其他网络交流方式来说有很多不可比拟的优势,比如操作简单,界面简单,信息显示十分直观,十分适合新手;信息的及时传递无延迟,用户可以十分自如地和他人交流而无须等待。这些优点也是聊天室出现这么长时间以来的仍然被广泛使用的原因。至今在线聊天室仍是被很多网站作为吸引网民的利器. 本人制作的是在线聊天室的功能实现,实现用户的登陆和注册,用户在线聊天功能,私聊功能及管理员管理用户功能。聊天的界面有框架构成的。 建设此聊天室,主要目的是为了能够和相同爱好的朋友提供一个实时交流的平台,而不会因为距离而疏远了。 关键词:聊天室;ASP IIS服务器;ACCESS数据库;Macromedia Dreamweaver 8

网络聊天室系统设计与实现

科研训练 网络聊天室系统设计与实现Design and implementation of network chat room system 学生姓名XXX 专业软件工程 学号1305XXXXX 指导教师李XX 祝XX 学院计算机科学技术学院 二〇一六年六月

目录

一、引言 随着网络的大幅度普及,以及网络技术快速发展,人们通过网络进行交流的方式发生着巨大的变化,人们不再拘泥于移动电话的通话模式,越来越多的人通过网络聊天工具进行交流,网络聊天室便是非常典型的聊天工具之一。聊天室系统的即时交流方式满足了网络中人们同时与多人进行聊天交流的需要,使得较多的人在同一个聊天页面进行交流变得方便,简单。 本设计所完成的网络聊天室具有常用聊天室的所有功能,包括使用账号登录聊天室、注册账号、显示在线用户列表、显示系统消息、两人之间进行私密聊天、消息提醒、发送表情、修改发送文字颜色;同时,为了管理聊天室中的用户使用语言的文明,赋予管理员踢出使用不文明语言的用户功能,显示全部聊天信息。该系统采用B/S(浏览器/服务器)结构进行开发,参考网络中正在使用的大型聊天室的架构、分析聊天室可实现功能,结合本次设计的相关要求,进行开发设计并写出需求分析说明书。 该系统具体开发环境:使用专业版作为服务器运行平台,服务器开发语言使用Java语言,前台使用Jsp技术、JavaScript、Jquery语言,系统框架使用 Struts2+Hibernate+Spring框架,后台数据库使用MySql数据库。 二、需求分析 该系统采用B/S模式设计,开发目的主要是提供一个基于网络的安全文明的供多人聊天社交平台。 系统运行环境需求 该系统是在windows 专业版操作系统下,搭建的运行平台,使用myEclipse作为开发工具,mySql作为数据库,Java语言作为系统后台开发语言。 JSP技术作为前台开发语言,其中使用JavaScript以及Jquery作为脚本语言。工程框架使用Struts+Spring+Hibernate框架。 (1)服务器配置: (2)客户端要求配置: 谷歌浏览器、狐火浏览器以及IE浏览器以上版本。 模块功能分析 (一)用户注册登录模块 新用户在使用该聊天室系统时,必须先进行注册新用户操作,后台将注册信息添加到数据库中,用于胡勇登录验证;在注册成功之后再进行登录; 当用户名与密码匹配成功,即可进入聊天室系统。 (二)在线用户显示模块 当用户登录进入系统后,该页面实现在线用户的统计,并将在线用户依次显示出来。如果当前用户属于管理员角色,则在普通用户角色的右边显示“踢下线”链接,如果当前用户属于普通用户角色,则正常显示在线用户名。 (三)用户交流聊天模块 该模块主要负责发送信息内容,选择聊天对象;除此之外,可以修改聊天内容的字体颜色以及发送的表情。发言的颜色和发言的表情通过下拉式组合框实现。发言内容书写完毕后。通过点击“发送”按钮,发送聊天内容。 (四)聊天信息显示模块 当用户选择聊天对象并发送聊天内容后,显示出当前发送的内容以及之前的历史聊天内容,聊天的内容只有对话的两人可见,其他人不可见。当用户退出系统后,再次登录进入聊天室时,两人的对话记录依然存在。

JAVA聊天室课程设计报告(含源代码压缩文件)

南京晓庄学院 《JAVA程序设计》 课程设计报告 Java聊天室的设计与实现题 目 姓名:戴佳伟 学号:14552019 班级:14软件工程3班 指导教 王峥 师: 完成时间2016.10.7 成绩: 信息工程学院 2016年6月

目录 1引言.............................. . (3) 1.1 java 聊天室开发背景.................................... (3) 1.1java 聊天室开发的目的和意义........ (3) 1.2完成的主要工作.................... (4) 2 需求分析和总体设计................ (5) 2.1 需求分析与设计思路................ (5) 2.1.1 关键技术说明 .................................... . (5) 2.1.2 需求分析..................... ....................... 6 2.1.3 java 聊天室设计方案与思路 (6) 2.1.4 java 聊天室目录结构说明....... (7) 2.2 java 聊天室功能结构 .................................... (8) 3 详细设计.......................... (10) 3.1 java 聊天室模块实现 .................................... (10) 3.1.1 XX 模块实现.................. ..................... 10 4 java 聊天室运行结果.................................... (13) 5课程设计总结...................... .. (15)

基于Linux网络聊天室的设计3

基于Linux网络聊天室的设计 摘要本课程设计实现了在linux下简单的网络聊天室。在Linux下编写并调试服务器端程序和客户端程序,实现了客户、服务器之间的连接和通信。可以在单机上开辟两个窗口分别运行客户、服务器端的程序,或者将两台主机连接分别作为客户和服务器的方式。本设计使用网络套接字socket和多线程在网络中的应用,并基于linux下的vi编辑器。本方案经gcc调试器调试成功,可以在单机网络聊天中使用。 关键词网络聊天室;linux ;socket ;vi Abstract Design and Implementation of the course in under linux simple network chat rooms. Prepared in the Linux and debugging server-side processes and client to achieve the client, server and communications link between. Can open up two windows on the stand-alone operation, respectively, customers, server-side procedures, or to connect two hosts, respectively, as the way the client and server. The design of the network socket using the socket and multi-threaded applications in the network, and under linux based vi editor. The program by the success of gcc debug debugger, you can chat in the use of stand-alone network. Key words Network Chat Rooms; Linux; Socket; Vi

java课程设计报告(java聊天室)

Java聊天室课程设计 一、需求分析 1.1开发背景 在信息化社会的今天,网络飞速发展,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似MSN、QQ,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的想法,且通过制作该程序还能更好的学习网络软件编程知识。 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也得到响应的服务。 1.2设计要求 本课程设计的目标是利用套接字socket()设计一个聊天程序,该程序基于C/S模式,客户机器向服务器发聊天请求,服务器应答并能显示客户机发过来的信息。 1.3设计目的 通过设计一个网络聊天程序,对套接字、数据报通讯、URL、与URLConnectiom的相关知识有详细的了解和充分的认识。能将相关的只是运用到相关的实践中去。 1.4功能实现 聊天室共分为客户端和服务端两部分,服务器程序主要负责侦听客户端发来的消息,客户端需要登录到相应的服务器才可以实现正常的聊天功能。 服务器的主要功能有 1)在特定端口上进行侦听,等待客户连接 2)用户可以配置服务器的真挺端口

Windows C语言构建网络聊天室

Windows C语言构建网络聊天室 利用C语言编写Windows应用程序有两种方式:一种是Windows C编程方式,另一种是Visual C++编程方式。在一般情况下,Visual C++编程方式编写的程序源代码量小、开发时的工作量小、工作难度也较小,但编译后的代码量较大,运行速度略低;而Windows C编程方式编写的程序源代码量虽然较大,但可执行代码效率高。随着技术的进步,Visual C++编程方式已被广泛采用,但象网络编程等一些对速度要求高、对硬件操作较多的程序,大多数还是用Windows C编程方式开发的。另外,学习Windows C 程序设计,还有助于更深入地了解Windows的内幕和Windows API。 基本的网络编程都是建立在Winsock基础上的。Winsock是90年代初,为了方便网络编程,由Microsoft联合了其他几家公司共同制定的一套WINDOWS下的网络编程接口,它是通过C语言的动态链接库方式提供给用户及软件开发者的,主要由winsock.h头文件和动态链接库winsock.dll组成,目前有两个版本:Winsock1.1和Winsock2.0。 作为网络编程接口,Winsock屏蔽了网络底层的复杂的协议和数据结构,使得编程人员对网络的操作变得非常简单,因此,在Win32平台上,访问众多的基层网络协议,Winsock是首选接口。 用Winsock构建一个网络聊天室,有两种基本的方式:数据报方式和流方式。 一、面向无连接的数据报方式 数据报方式又称无连接方式,对应的是UDP(User Datagram Protocol)协议。这种方式不提供数据无错保证,数据可能丢失或重复并且接收顺序混乱,后发出的报文可能会先收到,并且报文的长度是有限制的;不过,由于取消了重发校验机制,能够达到较高的通信速率,可以用于对数据可靠性要求不高的通信,如实时的语音、图像传送和广播消息等。 和C语言一样,函数是Windows C编程的最基本的单位。不过,Windows C主要使用API函数,而网络编程则主要使用Winsock提供的API函数。数据方式构建网络聊天室主要使用了以下几个函数:1.WSAStartup():初始化。 【函数原型】 int PASCAL FAR WSAStartup(WORD wV ersionRequired, LPWSADATA lpWSAData); 【使用说明】 每一个使用winsock的应用程序,都必须进行WSAStart函数调用,并且只有在调用成功之后才能使用其它的winsock网络操作函数。 返回值:调用成功返回0;否则,返回出错信息。 WversionRequired<输入>:表示欲使用的Winsock版本,这是一个WORD类型的整数,它的高位字节定义的是次版本号,低位字节定义的是主版本号。 LpWSAData<输出>:是一个指向WSADATA资料的指针。这个资料我们一般不使用。2.Socket():创建一个Socket。 【函数原型】 SOCKET socket(int af,int type,int proctocol); 【使用说明】 Winsock网络通信的第一步通常就是调用这个函数。所有的通信在建立之前都有要创建一个 Socket。该函数的功能与文件操作中的fopen()类似,返回值是由Winsock定义的一种数据类型 SOCKET,它实际是一个整型数据,是Socket创建成功时,Windows分配给程序的Socket编号,后面调用传输函数时,可以把它像文件指针样引用。如果Socket建立失败,返回值 WIV ALID_SOCKET。 Af<输入>:指address family(地址族),一般都填AF_INET,表示是在Internet上的Socket; Type<输入>::是Socket的类型,当采用流连接方式时,用SOCK_STREAM;采用数据报文方式时,用SOCK_DGRAM。

网络课程设计实验报告--QQ聊天实现

计算机网络课程设计报告 设计选题网络聊天室 姓名马继鸣 学号 0909090630 完成时间 2012-1-12 一、需求分析

聊天工具大多数由客户端程序和服务器程序外加服务器端,本程序采用客户机/服务器架构模式。通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能。用多线程可完成多点对多点的聊天。 主要有两个应用程序,分别为服务器程序和客户端程序。服务器应用程序主要用于消息转发,以及向所有用户发送系统消息等;客户端应用程序主要用于客户聊天记录的显示和信息输入。采用Client/Server(C/S)体系结构,即客户机/服务器体系结构。聊天服务器专门用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送到服务器。该聊天系统实现群聊,用户登陆,退出聊天系统等功能。 二. 设计 1.设计思想: 课程设计中利用JAVA实现基于C/S模式的聊天程序。聊天室共分为服 务器端和客户端两部分,服务器端程序主要负责侦听客户发来的消息,客 户端登录到服务器端才可以实现正常的聊天功能。

2.功能设计 (1)服务器端的主要功能如下。 在特定端口上进行侦听,等待客户端连接。用户可以配置服务端的侦听端口,默认端口为10000. 当停止服务时,断开所有用户连接。 (2)客户端的主要功能如下。 连接到已经开启聊天服务的服务端。 当服务器端开启的话,用户可以随时登录与注销。

用户可以向所有人发送消息。 3.详细设计 聊天室服务器端设计 聊天室服务器中主要的功能文件的功能如下: MyButLis.java 主要用于添加事件侦听和动作处理,具体是服务器按钮中的“终止”“发送”的处理。 public class MyButLis implements ActionListener private MyServe server; private JTextField filed1; public void actionPerformed(ActionEvent e) MyChatSet.java 服务器的线程队列,运行的方法,新增一个用户,则增加一个线程,并可以返回应答消息,给其余用户发送上下线信息,发送聊天信息(群聊私聊虽然已写,但是不知为何没有实现),发送用户列表。关键在于除了线程之外,还定义了传输数据时的协议内容,如何分辨不同的信息,如聊天信息,登陆信息,上下线信息,并把信息完整准确的传递。 public static ArrayList servers=new ArrayList();//线程队列 public static void addThread(MyserThread th) //增加一个服务器线程对象 public static void sendReMess(String type,String state,String s,MyserThread myth)//返回应答信息 public static void SendOSMess(String type,String user)//其他用户上下线信息 public static void SendChatMess(String type,String sender,String reciver,String Mess)//聊天信息 public static void SendList//用户列表 MyCheckTool.java 保存用户的登陆信息,在其中建立一个码表,并且可以判断登陆信息是否合法。 //建立码表,用以保存用户信息 private static Map maps=new HashMap(); public static boolean CheckUser(MyUserInfo user)// 验证用户名

java编写的简单局域网聊天室(适合初学者).

import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.Panel; import java.awt.Point; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.FileWriter; import java.io.IOException; import https://www.wendangku.net/doc/da17332464.html,.DatagramPacket; import https://www.wendangku.net/doc/da17332464.html,.DatagramSocket; import https://www.wendangku.net/doc/da17332464.html,.InetAddress; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class GUI_Chat extends Frame { private static final long serialVersionUID = 1L; private TextArea viewTextArea = new TextArea(20, 1; private TextArea sendTextArea = new TextArea(; private TextField ipTextField = new TextField(20; private Button sendButton = new Button(" 发送" ; private Button clearButton = new Button(" 清屏" ; private Button logButton = new Button(" 记录" ; private Button shakeButton = new Button(" 震动" ; private Panel panel = new Panel(; private DatagramSocket socket ;

JAVA聊天室系统的设计与实现

目录 第1章绪论- 1 - 1.1论文背景及课题来源 (1) 1.2本课题在国内外的发展状况 (1) 1.3应解决的问题及系统开发意义 (1) 第2章开发工具及相关技术介绍........................................................................................................... - 2 - 2.1J A V A与S OCKET简介 .. (2) 2.2JB UILDER5介绍 (3) 2.3C/S模型介绍 (3) 2.4用J A V A实现S OCKET模型 (4) 2.5J A V A中的线程模型简介 (5) 2.6SQL SERVER2000简介 (5) 第3章系统需求分析............................................................................................................................... - 6 - 3.1系统任务描述. (6) 3.2系统功能分析 (6) 3.2.1 系统的功能需求....................................................................................................................... - 6 - 3.2.2系统数据流图............................................................................................................................ - 7 - 3.2.3系统数据分析............................................................................................................................ - 8 - 3.3系统可行性分析 (9) 第4章系统设计 .................................................................................................................................... - 11 - 4.1系统总体结构设计 (11) 4.2数据库设计 (12) 4.3系统功能模块详细设计 (13) 第5章编码与实现 ................................................................................................................................ - 16 - 5.1系统主要模块代码 (16) 5.1.1启动、停止服务器.................................................................................................................. - 16 - 5.1.2客户端连接服务器.................................................................................................................. - 17 -

Linux下的Socket网络编程:一个简易聊天室的实现-徐慧军

Linux下的Socket网络编程:一个简易聊天室的实现-徐慧军

高级程序设计与应用实践 报告 一个简易聊天室的实现 姓名:徐慧军 学号:2121134 专业:电子与通信工程 学院:信息科学与技术学院 任课教师:廖晓飞 2013年05月02日

Linux下的Socket网络编程: ——一个简易聊天室的实现一、socket介绍 socket接口是TCP/IP网络的API,socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP 网络编程,必须理解socket接口。 socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix 系统的输入和输出的话,就很容易了解socket了。网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符。socket也具有一个类似于打开文件的函数调用socket(),该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过该socket实现的。常用的socket类型有两种:流式socket (SOCK_STREAM)和数据报式socket(SOCK_DGRAM)。流式是一种面向连接的socket,针对于面向连接的TCP服务应用;数据报式socket是一种无连接的socket,对应于无连接的UDP服务应用。 二、Socket创建 socket函数原型为: #include #include int socket(int domain, int type, int protocol); 功能:调用成功,返回socket文件描述符;失败,返回-1,并设置errno 参数说明: domain指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP 协议族; type参数指定socket的类型: SOCK_STREAM 提供有序、可靠、双向及基于连接的字节流

聊天室设计报告

网 络 聊 天 系 统 设 计 报 告 组长:靳子豪 组员:凯强、许玉军、王明明 完成时间:2015年11月3日

一、可行性研究报告 可行性研究报告(ISO标准) 编者说明: 在立项时,应该对项目进行综合分析,探讨项目的经济、社会、技术可行性,从而为决策提供基础。该模板为ISO标准文档模板,其不仅适用于软件项目,对于其它的系统项目也适用。 1.引言 1.1 编写目的 该聊天室项目可行性研究报告是对项目课题的全面考虑,是项目分析员对下一步工作进行的前提,是软件开发人员正确成功开发项目的前提与基础。写可行性研究报告可以使软件开发团体尽可能早的估计研究课题的可行性,较早的认识到系统方案的缺陷,可以少花时间和精力,也可减少成本资金,避免专业性的问题。 1.2 背景 a. 待开发系统的名称:信息交流系统 b 用户:大众 c. 它基于web小浏览器的程序系统的设计与开发, 服务平台:appserv-win 开发语言:PHP 数据库:MY SQL 1.3 定义 技术可行性:分析功能,性能以及限制条件,能否是一个技术上可实现的系统 经济可行性:估计开发费用已及最终从开发成功的系统所获得的收入或利益,衡量比较支出的费用和收到的利益 1.4 参考资料 《软件工程导论》(第6版)清华大学海藩牟永敏编著 可行性研究的前提 2.1 要求 a、聊天室功能 用户的聊天功能,包括数据输入、修改、删除,并要达到界面美观又好、使用方便 b、软件的性能 开发该软件应具有的基本要求与功能是实现用户信息数据包括与用户有关的数据 的管理与操作处理,基于MY SQL的数据库的数据管理使该软件有更优异的性能,软件的基本数据流动为用户数据的输入,用户信息及数据的输出。 c、输出 用户基本信息和聊天容 d、输入 用户根据自身需要,发起聊天 e、安全方面的要求 设置管理员 2.2 目标 该软件的设计目标必须尽量达到人力与设备费用的节省,软件的整个设计过程必须通过生产能力的提高、人员工作效率的提高等等使软件开发成本最小化。 2.3 条件、假定和限制 a、本聊天室建议使用寿命为5-10年 b、法律方面的限制:(1)、严禁危害国家信息安全(2)、严禁损害国家荣誉和利益(3)、严禁传播不良信息(5)、严禁抄袭 2.4 进行可行性研究的方法 成本效益分析、对估算问题的看法、软件的作用围、软件的成本估算、速度安排

JAVA课程设计聊天室系统

Java课程设计指导书(学生版初稿) 第二章聊天室系统 目标 2.1 背景介绍 2.1.1 业务背景 2.1.2 技术背景 2.2 需求分析 2.2.1功能需求分析 2.2.2 业务对象分析 2.2.3 验收测试要求 2.3 系统设计 2.3.1 总体设计 2.3.2 详细设计 2.4 系统实现 2.5 小结 2.6 展望

第二章聊天室系统 学习目标: 1、理解基于网络的C/S模式的软件系统结构,掌握网络编程的基本概念。 2、了解Java 的多线程机制,掌握Java多线程技术的应用。 3、熟练掌握基于TCP协议的Socket编程。 4、了解Socket编程的协议约定,掌握简单应用协议的开发。 5、进一步巩固发展团队协作能力。 学习寄语:想必大家都用过QQ,其主要功能就是聊天,是不是很想知道它是如何实现的?本项目就是帮你实现一个简单的聊天系统,当然跟商业项目没法比,但从中你却可以了解这些系统是如何实现的,学到开发类似系统的基础知识和基本技能(基本并不意味不实用)。本章的内容有一定难度(多线程、基于TCP的应用协议编程),所以系统的开发采用了“增量迭代”的开发方式,由简易到繁难,希望你能顺利前行。我们的信念依然是:“不抛弃,不放弃”。你的改变和收获依然是老师真诚的期待,期待你更踏实、更自信。Come on!

2.1 背景介绍 2.1.1 业务背景 随着网络社会的不断发展,具有相同兴趣的网民需要互相远程交流,既要能省钱又要能即时交互,电话太贵、email又嫌慢,所以开发一个类似QQ 的及时通讯系统就变得非常有意义了。“Happy Chat”聊天系统应运而生,它较之QQ 的唯一好处是自主开发,用的放心,更适合在局域网内使用。它提供的功能远不如QQ丰富,但应具有如下功能:(1)与聊天室成员一起聊天;(2)可以与聊天室成员私聊;(3)用户注册、登录;(4)服务器监控聊天内容;(5)服务器发送通知;(6)服务器踢人;(7)保存服务器日志。(8)保存用户聊天信息。 2.1.2 技术背景 本系统要求使用java技术开发,使用文件保存数据,集成开发环境使用eclipse。开发者应有java程序设计语言、SWING基本GUI组件、多线程、文件使用、socket编程、使用eclipse的基本知识和技能。系统采用两层C/S体系结构,C端负责通过GUI与客户交互,实现注册、登陆、收发信息、退出等功能;S端是聊天系统的应用服务器,主要有处理用户注册、登录、用户收发信息、用户退出等功能。C端和S端是通过网络交互的,其基本原理如图1所示: 图1 C/S通讯基本原理图

网络编程_基于TCP的简易聊天室_实验报告

网络编程 课程设计说明书 题目名称:基于TCP/IP的网络文字聊天程序设计专业:网络工程

班级: 1201班 学号: 1220140105 姓名:蒋星 指导老师:利平 完成日期: 2014年12月13日

目录 一、实验基本信息概要3 1. 题目要求 3 2. 题目容3 3. 开发环境 3 二、流程图4 三、系统简介5 1.界面5 2. 软件功能 5 3. 系统设计 9 4. 优点与缺点9 四、系统详细设计11 1. ChatServer类11 2. ChatClient 类13 3. SocketException类15 5. 命令协议 15 6. 消息格式 16 五、系统测试16 1. 服务器使用错误16 2. 客户端使用错误17 3. 启动服务器17 4. 启动客户端17 5. 关闭客户端17 6. 启动服务器错误提示18 7. 公开聊天 18 8. 私聊 18 9. 错误的私聊19 10. 更名20 11. 帮助20 12. 非法指令20 13. 非法的指令参数20 14. 连接服务器失败21 六、心得体会21 七、完整代码21 Charserverd.cpp 服务器main函数文件 21 ChatServer.h 服务器类头文件 22 ChatServer.cpp 服务器类 23 ClientInfo.h 客户信息类 33 Charclientd.cpp 客户端main函数 34 ChatClient.h 客户端头文件34 ChatClient.cpp 客户端类 35 InitSock.cpp 初始化WINSOCK类41

SockException.h 异常类41八、[参考文献] 42

聊天室设计报告

聊天室设计报告

————————————————————————————————作者:————————————————————————————————日期: ?

网 络 聊 天 系 统 设 计 报 告 组长:靳子豪 组员:冯凯强、许玉军、王明明

完成时间:2015年11月3日 一、可行性研究报告 可行性研究报告(ISO标准) 编者说明: 在立项时,应该对项目进行综合分析,探讨项目的经济、社会、技术可行性,从而为决策提供基础。该模板为ISO标准文档模板,其不仅适用于软件项目,对于其它的系统项目也适用。 1.引言 1.1 编写目的 该聊天室项目可行性研究报告是对项目课题的全面考虑,是项目分析员对下一步工作进行的前提,是软件开发人员正确成功开发项目的前提与基础。写可行性研究报告可以使软件开发团体尽可能早的估计研究课题的可行性,较早的认识到系统方案的缺陷,可以少花时间和精力,也可减少成本资金,避免专业性的问题。 1.2背景 a. 待开发系统的名称:信息交流系统 b 用户:大众 c.它基于web小浏览器的程序系统的设计与开发, 服务平台:appserv-win 开发语言:PHP 数据库:MY SQL 1.3定义 技术可行性:分析功能,性能以及限制条件,能否是一个技术上可实现的系统经济可行性:估计开发费用已及最终从开发成功的系统所获得的收入或利益,衡量比较支出的费用和收到的利益 1.4 参考资料 《软件工程导论》(第6版)清华大学出版社张海藩牟永敏编著 可行性研究的前提 2.1 要求 a、聊天室功能 用户的聊天功能,包括数据输入、修改、删除,并要达到界面美观又好、 使用方便 b、软件的性能 开发该软件应具有的基本要求与功能是实现用户信息数据包括与用户有关 的数据的管理与操作处理,基于MY SQL的数据库的数据管理使该软件有 更优异的性能,软件的基本数据流动为用户数据的输入,用户信息及数据的 输出。 c、输出 用户基本信息和聊天内容 d、输入 用户根据自身需要,发起聊天 e、安全保密方面的要求 设置管理员 2.2 目标

Java聊天室课程设计报告

UML课程设计 题目网络聊天程序开发设计与实现 学号:201515614376 姓名:卫国辉 指导教师: 完成时间:2017年 12月

目录 1.摘要 (2) 2.绪论 0 2.开发环境 0 3.需求分析 (1) 3.1程序简介 (1) 3.2程序功能 (1) 4.系统设计 (2) 4.1概要设计 (2) 4.2详细设计 (2) 5.测试 (7) 6.结论 (9) 参考文献 (10)

摘要 本次训练主要是考查了对JA V A程序设计的综合运用,设计一个Socket 通信的聊天程序,用户可以通过程序进行聊天通信,但不支持用户自定义表情及图片的发送。 本程序设计也用到了一些相关的标准Java的类,给程序设计带来了许多的方便,但用那些要切记加相应的类的包,还有一些构造方法和个别接口方法。 本程序可以实现用户之间的一些简单的交互,虽然功能较少,但是我想通过这次程序设计来熟悉并且学习更多关于JA V A编程的东西,来便于以后可以使用。 关键词:java聊天

1.绪论 对于一个选择网络编程的人来说,必须要有足够的细心和耐心,因为编程一般来说是很枯燥的乏味的,而且程序会越来越复杂,它所用到的符号、标记很多,所以不能出点小错误的。还有,我们不能只是看程序,要学会把自己学的自己拿去实践,自己去编一些程序,培养自己的动手能力,掌握一些编程技巧,熟练运用自己学到的理论知识,这样在以后才能开发出属于自己的东西。 如今,随着科学技术的发展,计算机已成为了我们生活中必不可少的设备了,而掌握计算机知识和运用,又成了我们每一个人的目标了。现在IT行业的飞速发展,无不应正了以前、现在、将来计算机行业都是科学发展的主导行业。而这些基本上都建立在程序上的,所以程序员对计算机行业来说,可想而知有多么的重要了,他们所付出的每一滴汗水都将推动这个行业的发展。 现在我就用JA V A语言编写一个简单的程序——Java聊天程序。将所学的基本知识用到其中去,这里包括了构造方法,创建图形界面,引用类等等。这不仅能锻炼我的实践能力,同时也进一步复习和巩固了我所学的理论知识。对以前没有学好的还有督促和促进作用。而且,根据需要,还可以了解一些课外的知识。增加自己的知识面。 2.开发环境 在开发此聊天程序时,该项目所使用的软件开发环境如下: 操作系统:Windows 7 开发工具:eclipse3.2及其VE插件

相关文档
相关文档 最新文档