小弟在写一网络程序,遇到了一个小小的问题?
如何实现多个用户同时连接,并且执行不同的操作?
是不是要用到线程?还是有什么更好的办法啊??
谢谢兄弟姐妹们,帮帮忙了!
分不是问题,不够再加!

解决方案 »

  1.   

    winsock控件不可能实现多线程,他只能产生一个winsock线程,加vb主线程一共2个
    . 要在vb实现多线程.这个问题...有点难,不过你的问题只需要创建一个winsock控件数组就可以
    这样 窗体上 winsock1(0) index=0
    程序中
    dim bActConn(MAX_CONNECT_NUMBER) as boolean
    然后在 Winsock1_ConnectionRequest 写下面代码
    dim i as integer 
    for i = 1 to MAX_CONNECT_NUMBER 
       if bactconn(i) = false then exit for
    next i
    if i>MAX_CONNECT_NUMBER then 
       msgbox "达到最大连接数":exit sub
    end if
    load winsock1(i)
    winsocki(i).accept requestID
    bactconn(i)=true然后在Winsock1_Close(Index As Integer) 事件中
       winsock1(index).close
       unload winsock1(index)
       bactconn(index)=false然后在Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)事件中
       就可以根据不同的index识别不同的连接注意winsock1(0)是专门用来listen的,  可以在form_load里面写上 winsock1(0).listen
    winsock1(1-MAX_CONNECT_NUMBER)动态的load, unload,用来传送数据的
      

  2.   

    你的意思是动态的加入Winsock控件,然后对数组操作??
    如果是用户连接过多比如10000人呢?这样系统的资源还能剩多少???