| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1377 人关注过本帖
标题:想写一个局域网聊天系统
只看楼主 加入收藏
davyxjc
Rank: 2
等 级:论坛游民
帖 子:130
专家分:76
注 册:2009-6-30
结帖率:70.37%
收藏
已结贴  问题点数:5 回复次数:8 
想写一个局域网聊天系统
没有写过,请问谁有这方面的经验或实例,要能传送附件的,请哪位好心个讲解一下思路或上传一个实例看看?
小女子谢谢大家啦!
搜索更多相关主题的帖子: 局域网 小女子 
2011-06-10 17:44
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:3 
不知道这个能满足你的需求吗?超牛~写了一年~太有毅力了~软件画面真不错~
http://www.

不要選我當版主
2011-06-10 18:04
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
或者~

http://www.

http://www.
http://www.
http://www.

不要選我當版主
2011-06-10 18:07
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
我有试用耶〜好像可以用〜只可惜公司没人敢让我当Client〜都怕有毒〜

不要選我當版主
2011-06-11 01:28
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:3 
以前用vb winsocket控件做程序多了去了,好长时间不做,都忘了,今天上午没事,做了个非常简单的udp通讯,可以在局域网内聊天,可能只能单对单聊,不可以一对多聊,希望能对楼主起到抛砖引玉的作用。
在vb你先新建一个工程,在左边工具箱里按鼠标反键,选“部件”,就会弹出部件选择窗口,勾选Microsoft Winsock Control 6.0,工具箱里就会多个像两台电脑联网的部件,在新建的窗口里添加它,取名wsck,然后添加两个text,一个combobox,一个command(我给你的工程里都弄好了),拷贝下述代码,运行即可
程序代码:
Const Bs = "~UDP~" '通讯联络开始标识

Private Sub Command1_Click()
  If Trim(Text2) <> "" Then
    Wsck.SendData Bs & "3" & Trim(Text2)
    Text1 = Text1 & Time & " 你对" & Wsck.RemoteHostIP & "说:" & Text2 & vbCrLf
  End If
End Sub

Private Sub Form_Load()
  On Error GoTo err_CL
  Wsck.Protocol = sckUDPProtocol
  Combo1.Clear
  If SearchServer Then Exit Sub '找到服务器的处理
  Wsck.LocalPort = 8888
  Wsck.Bind
  Exit Sub
err_CL:
  MsgBox "端口可能被占用,启动失败"
  Unload Me
End Sub

Private Function SearchServer() As Boolean
  '本过程扫描看有没有服务端等待通讯
  Dim i As Integer, j As Integer, d As Date
  SearchServer = False
  Wsck.RemoteHost = "255.255.255.255"  '广播地址
  Wsck.RemotePort = 8888
  Wsck.Bind
  For i = 0 To 4
  '发10次广播信息
    Wsck.SendData Bs & "1" '广播求服务器信息
    d = Time
    While d = Time
      DoEvents
    Wend
  Next
  If Combo1.ListCount = 0 Then
    Combo1.AddItem "我是服务器"
    Combo1.Text = "我是服务器"
    Wsck.Close
  Else
    SearchServer = True
    Combo1 = Combo1.List(0)
  End If
End Function

Private Sub Wsck_DataArrival(ByVal bytesTotal As Long)
  Dim a As String, b() As String, i As Integer
  Wsck.GetData a, vbString
  b = Split(a, Bs): i = Val(Left(b(1), 1))
  If i = 1 Then Wsck.SendData Bs & "2" & Wsck.LocalIP  '数据1表明有客户连接,需向对方返回我的地址
  If i = 2 Then Combo1.AddItem Right(b(1), Len(b(1)) - 1)        '2表明是服务器送来的信息,将后面的ip都放进combo1中
  If i = 3 Then Text1 = Text1 & Time & " " & Wsck.RemoteHostIP & "对你说:" & Right(b(1), Len(b(1)) - 1) & vbCrLf '聊天信息
End Sub


网络通讯.rar (8.54 KB)


[ 本帖最后由 lowxiong 于 2011-6-11 12:36 编辑 ]
2011-06-11 11:40
davyxjc
Rank: 2
等 级:论坛游民
帖 子:130
专家分:76
注 册:2009-6-30
收藏
得分:0 
我就是要一对多天啊,有时候老板发通知要用的.
请问一对多的聊天应该怎样实现呢?
2011-06-13 09:33
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
回复 6楼 davyxjc
一对多也好做,把wsck控件做成控件数组,第一个启动的自动成为服务器,在8888端口监听,以后启动的都先找服务器,找到后从服务器先下通讯表,通讯表里是ip地址和端口号,这样一来你只要选择那个ip就可以和哪个通讯了。在服务器端就是定期发心跳信号,确认和自己连接的客户端是否在线上,如有断线的就广播信息通知在线用户刷新。
要不要我帮你做一个?传文件部分(附件)啰嗦些,可能要多线程,而vb6多线程实现起来比较麻烦,.net就简单多了。

[ 本帖最后由 lowxiong 于 2011-6-13 10:08 编辑 ]
2011-06-13 09:57
davyxjc
Rank: 2
等 级:论坛游民
帖 子:130
专家分:76
注 册:2009-6-30
收藏
得分:0 
lowxiong朋友:
你要是能帮我写一个一对多发信息的系统那太好了,我先谢谢你了.
2011-06-13 14:54
jxawgya
Rank: 1
等 级:新手上路
帖 子:64
专家分:9
注 册:2010-1-5
收藏
得分:0 
我也想了解,挺一下
2011-06-27 15:12
快速回复:想写一个局域网聊天系统
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043500 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved