又是 winsock 问题,请教大家两个问题

zhlym 2009-02-23 11:47:53
问题1:winsock用TCP,多客户端连接后,winsock数组会一直累加(即使客户端全退出了,winsock数组还是保持原来的最大客户连接数组),有没办法把数组变回为0 (0是默认开始数)?

问题2:winsock用UPD,模式也是客户端对服务端,首先是客户端主动连上服务端(并且会有很多客户端连接),当服务端读数据库有记录会便会向客户端发送数据,因不像TCP那样每个客户有唯一标识的连接状态,那么我如何区别我该给那个客户端发信息呢(我想会出现IP相同的客户端出现吧,有个简单例子最好,3Q)?
...全文
79 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqpkeva 2009-02-26
  • 打赏
  • 举报
回复
我是新人,我昨天上传的资源为什么今天还没有在我的资源中看到?要多久才能显示得到?我本想把这个多连接的资源例子的下载地址发给你看的,但我看不到我昨天上传的资源。
zhlym 2009-02-25
  • 打赏
  • 举报
回复
看来UPD做为下一轮备选了
iqpkeva 2009-02-25
  • 打赏
  • 举报
回复
对于第二个问题如果是内网的话可以用机器作为标识(传送自己的机器名,然后接收端判断).

我刚上传了这个例子的资源,你可以下载 来看看,有单连和多连方式。一定可以让你学个够。可能需要审核,你到时查看我的资源看看吧。
cih2000zg 2009-02-25
  • 打赏
  • 举报
回复

Private Sub Loc_Click()
Winsock1.SendData Text1.Text
End Sub

Private Sub Form_Load()
Winsock1.Protocol = sckUDPProtocol
Winsock1.LocalPort = "10001"
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = "10000"
Winsock1.Bind
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim str As String
Winsock1.GetData str, vbString
Text2.Text = str
End Sub


上面是单个连接的,多个连接的还没有试过,,你如果试过有OK的。。发下给我哈。。
cih2000zg 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhlym 的帖子:]
问题1:winsock用TCP,多客户端连接后,winsock数组会一直累加(即使客户端全退出了,winsock数组还是保持原来的最大客户连接数组),有没办法把数组变回为0 (0是默认开始数)?

问题2:winsock用UPD,模式也是客户端对服务端,首先是客户端主动连上服务端(并且会有很多客户端连接),当服务端读数据库有记录会便会向客户端发送数据,因不像TCP那样每个客户有唯一标识的连接状态,那么我如何区别我该给那个客户端发信息呢(…
[/Quote]
第一个问题我也遇到过,前面load了winsock(i),后面记得要Unload

第二个问题,前面你用了TCP进行连接了,那么你服务端中肯定有自己的一个用户列表吧?要不你怎么管理服务端的连接呢?那么TCP是有唯一标识的,你TCP的标识来进行发送不就可以了?何必要用UDP呢?
zhlym 2009-02-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chillystar 的回复:]
第一个问题,用unload object卸掉已经closed的连接,并且建立一个链表,作为空闲对象编号的指针;再分配时,先检索链表是否有空余编号,如果没有就从最大编号增加,如果有就以链表编号进行增加。
第二个问题,UDP不像TCP那样对点通信,而是广播式通信,因此没有唯一标识;用UDP只能通过采用自建用户ID进行登录,在发送消息时在消息内标识发给谁,还要在客户端进行处理,将不是自己的消息丢弃……
[/Quote]

嗯,第一个问题我已找到方法处理,第二个问题就觉得有点怪了,只能让服务端似类广播给全部客户端,然后客户端用登陆标识过滤不是自己的信息吗?
chillystar 2009-02-23
  • 打赏
  • 举报
回复
第一个问题,用unload object卸掉已经closed的连接,并且建立一个链表,作为空闲对象编号的指针;再分配时,先检索链表是否有空余编号,如果没有就从最大编号增加,如果有就以链表编号进行增加。
第二个问题,UDP不像TCP那样对点通信,而是广播式通信,因此没有唯一标识;用UDP只能通过采用自建用户ID进行登录,在发送消息时在消息内标识发给谁,还要在客户端进行处理,将不是自己的消息丢弃……
zhlym 2009-02-23
  • 打赏
  • 举报
回复
这么冷清呢

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧