WEB开发网      濠电姷鏁告慨鐑藉极閸涘﹦绠鹃柍褜鍓氱换娑欐媴閸愬弶鎼愮痪鍓ф嚀閳规垿鎮╃€圭姴顥濋梺姹囧€楅崑鎾诲Φ閸曨垰绠涢柛顐f礃椤庡秹姊虹粙娆惧剳闁哥姵鍔欐俊鐢稿礋椤栨艾鍞ㄩ梺闈浤涙担鎻掍壕闁圭儤顨嗛埛鎺楁煕閺囥劌浜滄い蹇e弮閺屸€崇暆鐎n剛鏆犻柧浼欑到閵嗘帒顫濋悡搴d画缂佹鍨垮缁樻媴缁涘娈┑顔斤公缁犳捇銆佸鎰佹▌濠电姭鍋撳ù锝囩《閺€浠嬫煟濡鍤嬬€规悶鍎辫灃闁绘ê寮堕崯鐐电磼閸屾氨效鐎规洘绮忛ˇ瀵哥棯閹佸仮鐎殿喖鐖煎畷鐓庘槈濡警鐎崇紓鍌欑劍椤ㄥ棗鐣濋幖浣歌摕闁绘棃顥撻弳瀣煟濡も偓閻楀棗鈻撳Δ鍛拺閻犲洠鈧櫕鐏€闂佸搫鎳愭慨鎾偩閻ゎ垬浜归柟鐑樼箖閺呮繈姊洪棃娑氬婵☆偅鐟╅、娆掔疀閺冨倻鐦堥梺姹囧灲濞佳勭閿曞倹鐓曢柕濞垮劤閸╋絾顨ラ悙鏉戝妤犵偞锕㈤、娆撴嚃閳哄骞㈤梻鍌欐祰椤鐣峰Ο鑲╃煋妞ゆ棁锟ユ禍褰掓煙閻戞ɑ灏ù婊冪秺濮婅櫣绱掑Ο铏逛桓闂佹寧娲嶉弲娑滅亱闂佸憡娲﹂崹閬嶅煕閹达附鐓欓柤娴嬫櫅娴犳粌鈹戦垾鐐藉仮闁诡喗顨呴埥澶愬箳閹惧褰囩紓鍌欑贰閸犳牠顢栭崨鎼晣闁稿繒鍘х欢鐐翠繆椤栨粎甯涙繛鍛喘濮婄粯鎷呴悷閭﹀殝缂備浇顕ч崐鍨嚕缂佹ḿ绡€闁搞儯鍔嶅▍鍥⒑缁嬫寧婀扮紒瀣崌瀹曘垽鎮介崨濠勫幗闁瑰吋鐣崹濠氬煀閺囥垺鐓ユ慨妯垮煐閻撶喖鐓崶銉ュ姢缂佸宕电槐鎺旂磼濡偐鐣虹紓浣虹帛缁诲牆鐣峰鈧俊姝岊槺缂佽鲸绻堝缁樻媴缁涘娈愰梺鎼炲妺閸楀啿鐣烽鐐茬骇闁瑰濮靛▓楣冩⒑缂佹ɑ鈷掗柍宄扮墦瀵偊宕掗悙瀵稿幈闂佹娊鏁崑鎾绘煛閸涱喚鎳呮俊鍙夊姇铻i悶娑掑墲閺傗偓闂備胶绮崝鏇炍熸繝鍥у惞闁绘柨鐨濋弨鑺ャ亜閺冨洦顥夐柛鏂诲€濋幗鍫曟倷閻戞ḿ鍘遍梺鍝勬储閸斿本鏅堕鐐寸厱婵炲棗绻掔粻濠氭煛鐏炵晫效鐎规洦鍋婂畷鐔碱敆閳ь剙鈻嶉敐鍥╃=濞达絾褰冩禍鐐節閵忥絾纭炬い鎴濇川缁粯銈i崘鈺冨幍闁诲孩绋掑玻璺ㄧ不濮椻偓閺屻劌鈽夊Ο澶癸絾銇勯妸锝呭姦闁诡喗鐟╅、鏃堝礋椤撴繄绀勯梻鍌欐祰椤曟牠宕伴弽顐ょ濠电姴鍊婚弳锕傛煙椤栫偛浜版俊鑼额嚙閳规垿鍩勯崘銊хシ濡炪値鍘鹃崗妯侯嚕鐠囨祴妲堥柕蹇曞閳哄懏鐓忓璺虹墕閸旀挳鏌涢弬娆炬Ш缂佽鲸鎸婚幏鍛矙鎼存挸浜鹃柛婵勫劤閻挾鎲搁悧鍫濈瑨闁哄绶氶弻鐔煎礈瑜忕敮娑㈡煛閸涱喗鍊愰柡灞诲姂閹倝宕掑☉姗嗕紦 ---闂傚倸鍊搁崐鎼佸磹閻戣姤鍊块柨鏃堟暜閸嬫挾绮☉妯哄箻婵炲樊浜滈悡娑㈡煕濞戝崬骞樻い鏂挎濮婅櫣鎹勯妸銉︾彚闂佺懓鍤栭幏锟�
开发学院WEB开发综合 利用VB设计聊天室 阅读

利用VB设计聊天室

 2006-02-27 11:55:39 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偛顦甸弫鎾绘偐閹绘帞鈧參姊哄Ч鍥х仼闁诲繑鑹鹃悾鐑藉蓟閵夛妇鍘甸梺瑙勵問閸犳牠銆傛總鍛婄厱閹艰揪绱曟牎闂侀潧娲ょ€氫即鐛幒妤€绠f繝闈涘暙娴滈箖鏌i姀鈶跺湱澹曟繝姘厵闁绘劦鍓氶悘杈ㄤ繆閹绘帞澧涚紒缁樼洴瀹曞崬螖閸愬啠鍓濈换娑樼暆婵犱胶鏁栫紓浣介哺閹瑰洤鐣烽幒鎴僵闁瑰吀鐒﹂悗鎼佹⒒娴g儤鍤€闁搞倖鐗犻獮蹇涙晸閿燂拷濠电姷鏁告慨鐑藉极閸涘﹥鍙忔い鎾卞灩缁狀垶鏌涢幇闈涙灈鐎瑰憡绻冮妵鍕箻鐎靛摜鐣奸梺纭咁潐濞茬喎顫忕紒妯肩懝闁逞屽墮宀h儻顦查悡銈夋煏閸繃鍋繛宸簻鎯熼梺瀹犳〃閼冲爼宕濋敃鈧—鍐Χ閸℃鐟愰梺鐓庡暱閻栧ジ宕烘繝鍥у嵆闁靛骏绱曢崢顏堟⒑閹肩偛鍔楅柡鍛⊕缁傛帟顦寸紒杈ㄥ笚濞煎繘鍩℃担閿嬵潟闂備浇妗ㄩ悞锕傚箲閸ヮ剙鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹  闂傚倸鍊搁崐鎼佸磹閻戣姤鍤勯柤鍝ユ暩娴犳氨绱撻崒娆掑厡缂侇噮鍨堕妴鍐川閺夋垹鍘洪悗骞垮劚椤︻垶宕¢幎鑺ョ厪闊洦娲栨牎闂佽瀵掗崜鐔奉潖閾忓湱纾兼俊顖氭惈椤矂姊虹拠鑼婵ǜ鍔戦崺鈧い鎺嶇閸ゎ剟鏌涢幘璺烘瀻妞ゎ偄绻愮叅妞ゅ繐瀚悗顓烆渻閵堝棙绀€闁瑰啿閰e畷婊勫鐎涙ǚ鎷洪梻渚囧亞閸嬫盯鎳熼娑欐珷妞ゆ柨澧界壕鐓庮熆鐠虹尨鍔熺紒澶庢閳ь剚顔栭崰鏍€﹂柨瀣╃箚婵繂鐭堝Σ鐑芥⒑缁嬫鍎愰柟鐟版搐铻為柛鎰╁妷濡插牊绻涢崱妤冪婵炲牊锕㈠缁樻媴妞嬪簼瑕嗙紓鍌氱М閸嬫挻绻涚€涙ḿ鐭ら柛鎾跺枛瀹曟椽鍩€椤掍降浜滈柟鐑樺灥閳ь剙缍婂鎶筋敆閸曨剛鍘遍柣搴秵娴滅兘鐓鍌楀亾鐟欏嫭纾婚柛妤€鍟块锝夊磹閻曚焦鞋闂備礁鎼Λ瀵哥不閹捐钃熼柕濞炬櫆閸嬪棝鏌涚仦鍓р槈妞ゅ骏鎷�
核心提示:Internet上的聊天室一向是一个吸引人的地方,但多用C语言设计,利用VB设计聊天室,我用VB设计了一个聊天室,取名为“升达自由论坛”,表明自己要退出,由服务器端关闭连接,实际使用证明效果良好,Internet上的通讯协议是TCP/ip
Internet上的聊天室一向是一个吸引人的地方,但多用C语言设计,我用VB设计了一个聊天室,取名为“升达自由论坛”,实际使用证明效果良好。

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

----程序分服务和客户程序两部分。客户程序启动后首先与服务器连接,连接成功后,随意输入一个名字即可进入聊天室;服务程序则负责维护与每一个客户的连接和数据交换,并且记录下所有聊天内容,及人员名单。由于在会话过程中大家起的都是假名字,不可避免地要有的人讲一些不健康内容,为了保持秩序,服务器程序实现了IP地址跟踪功能。管理人员可以很容易地查找出每一个匿名的计算机名,并对之进行警告或其它处理(下面会进一步介绍)。可保证会话内容的健康。如果服务器程序关闭,则所有客户程序自动关闭。

VB5的Winsock控件

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

----Winsock有多种属性、方法和事件,本文只列举出要使用的属性、方法和事件。

----......

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

程序介绍

----服务程序部分

----服务器程序启动时,先设置自己的本地端口,因为有些端口有其固定的作用,如80是WWW端口,故尽可能选择不可能使用的端口,这里我选择了1600。将连接状态设置为假,然后开始进行侦听。当侦听到有计算机要求与服务器进行对话,就接受,并记录下客户机的地址、端口、客户起的匿名,将连接状态设置为真,将上述内容存入一个用户自定义的数组中,进行动态维护。用户自定义数据类型如下:

PRivateTypeActiveUser
ClientIPAsString记录客户的IP地址
ClientNameAsString记录客户的匿名
ClientPortAsInteger记录当前会话的端口
ClientConnectedAsBoolean
客户连接状态,True表示已连接,False表示没有连接
EndType

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

.
.
.

----利用上述对象可以实现服务器的各种功能,当然,还可以再加入新控件,以使界面更美观。

----服务程序中三个关键程序段如下:

----1.处理连接请求

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

----......

----2.处理处于连接状态的用户发送来的信息

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

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

----......

----3.关闭客户连接

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

----......

----如何保证聊天内容的健康是一个很重要的方面,在Internet上,我们对谈话内容不健康者,只有将之开除出聊天室。但在局域网上则可以查出是谁谈话不文明(局域网环境为WindowsNT4.0服务器,Windows95工作站)。方法如下:在95工作站上将网络中的TCP/IP协议中的IP地址选项设为动态获得IP地址,在NT服务器上用DHCP管理工具为每一个客户机进行IP地址动态分配。聊天服务程序记录下来了每一个客户的IP地址,我们就可以通过DHCP管理工具很容易地查出某IP地址对应的计算机名,并进行处理。

客户程序部分

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

----......

----客户程序主要对象设置

----......

----“”显示所有正在聊天室中的用户名

----显示当前的状态(用户名,IP地址及是否密谈)

----与服务器程序一样,这里列出的并非全部的控件,但是已经足以完成工作。

----客户程序中的自定义类MyMessage用来记录自己的信息,

----......

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

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

->

Tags:利用 VB 设计

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接