2007-08-08

vb Winsock控件

关键字: socket

   如果有多台计算机,那就稍微复杂一些,客户端程序可以不做改动,而服务器端程序需要略做改动:

Private   sub   sckserver_connectrequest(Index   as   Integer,Byval   requestid   as   long)    
   
    dim   sip   as   string    
   
    dim   I   as   integer    
   
    sip=sckserver(0).RemoteHostIP   '获得登录者的IP地址    
   
    I=1    
   
    Do   while   I<=sckserver.ubound   '检查是否已经有该地址的记录    
   
    If   sckserver(I).RemoteHostIP=sip   then   '如有,不必加载新的控件    
   
    Sckserver(I).Accept   requestid    
   
    Exit   sub    
   
    End   if    
   
    I=I+1    
   
    Loop    
   
    Load   sckserver(I)   '否则,加载新的控件    
   
    Scksrver(I).accept   requestID    
   
    End   sub    
   
    注意到:以上的信息交谈实际上都发生在客户机与服务器之间,如果要做成聊天室那样,每个人的话都可以被别人“听到”,那就要在服务器端的DataArrival事件中,把接收到的客户机传来的数据,转发给所有客户机即可。    
   
    其循环转发信息的代码如下:    
   
    For   I=1   to   sckserver.count    
   
    if   sckserver(I).state<>sckclosed   then    
   
    sckserver(I).SendData   sdata    
   
    end   if    
   
    next   I    

评论
发表评论

您还没有登录,请登录后发表评论

jackhuang
搜索本博客
我的相册
81781065-3223-4183-8907-9ea5926faec0-thumb
辅料高架库
共 4 张
最近加入圈子
存档
最新评论