본문 바로가기
VB

[VB6.0] Socket Server(소켓 서버)

by 엘딘 2022. 5. 18.

( * 혼자 서버 클라이언트 연습하다 서버 연결할때 안나던 디버그가 날 경우 LSM 소켓 서버가 꺼져있는지 확인!)

클라이언트를 켜놓습니다.

서버를 켜준 후 클라이언트와 연결

 

'' Ip, Port창을 placehorder와 같이 커서가 올라가면 Text창 안의 문구를 지워줌
Dim msText As String
Dim nsText As String


'' 닫기 버튼
Private Sub ExitBtn_Click()
    Me.Hide
End Sub
Private Sub Form_Load()
    msText = IpTxt.Text
    nsText = PortTxt.Text
End Sub
'' 텍스트박스에 포커스가 가면 빈칸으로 변경
Private Sub IpTxt_GotFocus()
    IpTxt.Text = ""
End Sub

Private Sub PortTxt_GotFocus()
    PortTxt.Text = ""
End Sub
'' 텍스트 박스에서 포커스가 벗어나면 기존 문구 출력
Private Sub IpTxt_LostFocus()
    If IpTxt.Text = "" Then
        IpTxt.Text = msText
    End If
End Sub

Private Sub PortTxt_LostFocus()
    If PortTxt.Text = "" Then
        PortTxt.Text = nsText
    End If
End Sub
Private Sub ConnectBtn_Click()
    
    If ConnectBtn.Caption = "서버시작" Then
        Winsock1.Protocol = sckTCPProtocol
        Winsock1.LocalPort = CLng(PortTxt.Text)
        Winsock1.Listen
        ConnectBtn.Caption = "Send"
        Label1.Caption = "서버 동작 중!!"
        List1.AddItem "접속되었습니다"
    Else
''      Winsock1.SendData Text1.Text                    '' Text1에 적힌 내용을 전송
''      List1.AddItem "Send : " & Date & " " & Time & "   " & Text1.Text
''      Text1.Text = ""
        AddList ("")
    End If

End Sub
'' Socket통신 종료버튼
Private Sub DisConnectBtn_Click()
    Winsock1.Close
    ConnectBtn.Caption = "서버시작"
    Label1.Caption = "서버 동작 중지"
    List1.AddItem "접속이 끊겼습니다"
End Sub
'' Client연결이 끊어지면 발생하는 이벤트
Private Sub Winsock1_Close()
    Winsock1.Close
    Winsock1.Listen
    List1.AddItem "클라이언트 연결이 끊겼습니다"
End Sub
'' Client로부터 연결 요청이 오면 발생하는 이벤트
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    If Winsock1.State <> sckClosed Then
        Winsock1.Close
        Winsock1.Accept requestID
        List1.AddItem "클라이언트 연결이 되었습니다"
    End If
End Sub
'' Client로부터 데이터수신이 되면 발생하는 이벤트
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim buf$
    
    Winsock1.GetData buf
    
    If Trim(buf) = "[close]" Then
        Winsock1.Close
        ConnectBtn.Caption = "서버시작"
    End If
     
    List1.AddItem "Receive : " & Date & " " & Time & "   " & buf
    
End Sub
'' Text1에 내용 입력 후 엔터키 누를 시 서버로 데이터 전송
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)

On Error GoTo err
    Dim strMsg$

    If KeyCode = 13 Then                '' 13이 엔터를 의미
        AddList (strMsg)
    End If
    
err:
    If err <> 0 Then
        Call MsgBox(err.Description)
    End If
End Sub
Private Sub SendTxt(ByVal txt As String)
On Error GoTo err
    txt = Trim(txt)
    Winsock1.SendData txt
    
err:
    If err <> 0 Then
        Call MsgBox(err.Description)
    End If
End Sub
'' SendTxt를 공통으로 사용하기 위해서(Enter눌러서 보낼때와 Send버튼을 눌렀을때 동일 기능)
Private Sub AddList(AddText As String)
    strMsg = Text1.Text
            Call SendTxt(strMsg)
            List1.AddItem "Send : " & Date & " " & Time & "   " & strMsg
            Text1.Text = ""
End Sub

 

'VB' 카테고리의 다른 글

[VB6.0] Serial포트를 통해 Spread에 데이터 뿌려주기  (0) 2022.05.24
[VB6.0] 아스키코드(ASCII) 변환  (0) 2022.05.24
[VB6.0] Socket Client(소켓 클라이언트)  (0) 2022.05.18
[VB6.0] Serial 포트  (0) 2022.05.16
[VB.NET] TreeView  (0) 2022.05.13

댓글