2011-01-19 2 views
2

VB6에서 만든이 간단한 채팅 응용 프로그램을 winsock을 사용하여 만들었지 만 한 연결 만 허용한다는 것을 알 수 있듯이 어떻게 여러 사용자를 처리 할 수 ​​있습니까? 감사!VB6에서 winsock으로 만든 소켓 서버에서 여러 클라이언트를 처리하는 방법은 무엇입니까?

Private Sub Winsock1_Close() 
    ' Finaliza la conexión 
    Winsock1.Close 

    txtLog = txtLog & "*** Desconectado" & vbCrLf 

End Sub 

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) 

    If Winsock1.State <> sckClosed Then 
     Winsock1.Close ' close 
    End If 

    Winsock1.Accept requestID 

    txtLog = "Cliente conectado. IP : " & _ 
       Winsock1.RemoteHostIP & vbCrLf 

End Sub 

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 
Dim dat As String 

    Winsock1.GetData dat, vbString 
    txtLog = txtLog & "Cliente : " & dat & vbCrLf 

End Sub 

답변

2

해결 방법은 Winsock 개체 배열을 사용하고 런타임에 새 개체를 만드는 것입니다. 작성한 새 오브젝트가 연결 요청을 승인합니다.

따라서, 연결 요청 하위에, 당신은 새로운 소켓 것이다 : 편집

Dim ConnectionCount as long 

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) 
    ConnectionCount=ConnectionCount+1 

    Load Winsocks(ConnectionCount) 
    Winsocks(ConnectionCount).Accept(requestID) 

    txtLog = "Cliente conectado. IP : " & _ 
      Winsocks(ConnectionCount).RemoteHostIP & vbCrLf 

End Sub 

: http://www.devx.com/tips/Tip/5488

그것은 다음과 같습니다 : 여기 당신에게 내 코드보다 더 도움이 될 튜토리얼입니다 같은 생각.

+0

감사합니다 @ 브라드하지만 어떻게 winsocks 배열을 만들 수 있습니까 ?? – DomingoSL

+0

폼에 Winsock 컨트롤을 만들고 인덱스를 0으로 설정하면 컨트롤 배열의 일부가됩니다. – Brad

관련 문제