其实这个稿子以前发过,只是小弟太笨,还没搞定(还有分数不够了,请帮帮忙)要做一个监控软件,客户端软件安装在被监控设备上的计算机里(有N台),即时记录了设备的各种数据,所有数据以字符串形式发送到监控软件上来(我定义为服务器软件)1.假如服务器端已经连接到客户端了,客户端程序向服务端程序通过一个端口同时发送N种不同的数,服务端软件也要同时接受(即时更新),这该怎么做?看了之前的有高手说定义数组解决。2.服务器端同时要连接N个客户端,又如何保证通信?看了之前的有高手说也是定义数组解决(怎么有是数组~~)。3.网上有说设置两个winsock,一个监听,一个通信,用来防止通信中断后可以自动再监听。上述三种情况,能不能给小弟个实例参考一下好吗,谢谢各位大哥帮小弟忙吧,小弟做不出来会死的很惨~~谢谢大家!跪谢大家!跪拜大家!

解决方案 »

  1.   

    接受多个连接请求
    上面设计的基本服务器只能接受一个连接请求。通过创建控件数组,使用一个控件也可以同时接受多个连接请求。利用这种方法,不需要关闭连接,而只需创建新的控件实例(通过设置其索引属性),然后在新的实例上调用 Accept 方法。下面的代码假定名为 sckServer 的窗体上有一个 Winsock 控件,它的 Index 属性被设置为 0;因此控件是控件数组的一部分。在声明部分,声明了一个模块级的变量 intMax。在窗体的 Load 事件中,intMax 被设置为 0,数组中第一个控件的 LocalPort 属性被设置为 1001。然后调用控件的 Listen 方法,使之成为“监听”控件。在连接请求到达时,代码将检测 Index 是否为 0(“监听”控件的值)。如果为 0,监听控件将增加 intMax 的值,并使用该号码来创建新的控件实例。然后,使用新的控件实例接受连接请求。Private intMax As LongPrivate Sub Form_Load()
       intMax = 0
       sckServer(0).LocalPort = 1001
       sckServer(0).Listen
    End SubPrivate Sub sckServer_ConnectionRequest _
    (Index As Integer, ByVal requestID As Long)
       If Index = 0 Then
          intMax = intMax + 1
          Load sckServer(intMax)
          sckServer(intMax).LocalPort = 0
          sckServer(intMax).Accept requestID
          Load txtData(intMax)
       End If
    End Sub---------------------摘自MSDN
      

  2.   

    用xml格式或自定义格式,很多很多信息放在一起一次发送,服务器分析得出来就可以了
      

  3.   

    客户端发送字符串:<?xml version="1.0" encoding="UTF-8"?>
    <document>
        <mymsg>
            客户端
        </mymsg>
        <yourmsg>
            服务端
        </yourmsg>
    </document>服务端分析:引用Microsoft XML
    写代码
      

  4.   

    谢谢你,不过还有简单点的吗不用XML?