这个比较复杂,需要用到VB的套接字技术。我尽量说简单点。
点到点连接
这种情况下,两台机器都需要运行聊天程序。在程序运行后,打开并监听一个端口,并将端口发来的数据(一般为对方发来的信息)显示在聊天窗口内。但要注意当多个人打开程序时,需要对信息进行过滤,否则就成讨论组了。
服务器连接
这种情况下需要一台服务器,服务端和客户端程序都需要打开一个端口。客户端将信息发往服务器端口,服务器对信息进行解析后,再转发至接收的客户端。
关于套接字技术,请参见以下网址
http://wenku.baidu.com/link?url=1MCE_PC4BzyNl8v8We1Wyry6ZMktgkFbXE4xI8rTTJA-e9kaqLQcTxlumYNQ4IVPtMjlQhJ8h0doKFmag58Un-BauhC8lmY3U2GpyfvYN3G
我也写过聊天程序,一般来说也就是使用winsock控件来通讯,我认真想过,但也没有想到特别方便的方法。我的做法是这样的:所有用户都有一个sc(0)在监听某个端口,比如1234。每次需要发送数据到其它计算机的时候,就loadsc(newindex),用这个新load出来的winsock来发送到那个用户的1234端口。为了可以及时回收,用一个集合来记录sc()中哪个下标正在使用,以决定在load的时候newindex的数字。当数据发送完毕,就unload
sc(finishindex),并从集合中把下标退出来。实际上在局域网发送文本消息几乎不需要多长时间,所以就算你在狂发信息,(我试过监视sc的数目)一般来说就是一个sc(0)在监听(当然这个是一直不会关的),一个sc(1)在发送,已经极少碰到load一个sc(2)的情况了。使用该方法的确能有效的保证在多用户聊天的情况下保证发送和接受都正确。
至于显示消息则很简单了。在接收方sc(0)的收到消息事件中将信息提取出来放到某个textbox即可,而发送方则可以在消息发送完毕的事件中将信息放到textbox中。
如果你看得不是很明白,我可以贴出我的部分代码,或者给你作进一步讲解。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)