2014-07-06 14 views
0

배열의 마지막 인덱스로만 텍스트 메시지를 보낼 수 있습니다.이 항목은 수년 동안 주제 였지만이 작업을 수행하는 방법을 실제로 파악할 수는 없었습니다.VB6의 Winsock 컨트롤

그래서 vb6에서 winsock 컨트롤을 사용하여 LAN에 연결된 컴퓨터에서 메시지를주고받는 프로젝트를 시작했습니다.

내 프로젝트에는 두 개의 winsock 컨트롤, 즉 con과 conn이 포함되어 있습니다. 죄수는 연결 요청을 듣고 CONN 수 있도록 요청을 수락, 그래서 코네티컷, 클라이언트는 호스트하지만 호스트에 메시지를 보낼 수 있습니다 이제 연결된 여러 클라이언트가 있다는 것을 고객

Private Sub con_ConnectionRequest(ByVal requestID As Long) 
    If conn(0).State = sckClosed Then 
     conn(0).Accept requestID 
    Else 
     Load conn(socknum) 
     conn(socknum).Accept requestID 
    End If 
    socknum = socknum + 1 
End Sub 

에서 여러 요청을 수락 배열에있는 것 conn의 마지막 색인에만 문자 메시지를 보내거나 마지막에 연결된 클라이언트 만이 호스트에서 메시지를받을 수있는 유일한 메시지가 될 수 있습니다.

Private Sub txtSend_KeyPress(KeyAscii As Integer) 
    Dim n As Integer 
     If KeyAscii = 13 Then 
      If ishost = True Then 
       For n = 0 To conn.UBound 
        If conn(n).State = sckConnected Then 
         conn(n).SendData txtSend 
        End If 
       Next n 
      Else 
       con.SendData txtSend 
      End If 
      txtMessages.Text = txtMessages.Text & vbCrLf & txtSend.Text 
     End If 
End Sub 

내 코드에 무슨 문제가 있는지 알 수 없으므로 약간의 도움이나 힌트를 부탁드립니다.

답변

0

여기서 변수 ishost이 정의되어 있습니까? 코드를 올리시겠습니까?

ishost에 값을 할당하는 코드도 게시하십시오.

여기서 변수 socknum이 정의되어 있습니까? 코드를 올리시겠습니까? socknum 다른 곳에서 사용됩니까?

디버깅하려면 다음을 수행하십시오. 줄에 중단 점을 두십시오. n = 0 인 경우 conn.ubound로 이동하여 F8 키를 눌러 실행하십시오. 실행이이 줄에 도달합니까? conn.ubound의 값은 무엇입니까?