Syncope.T-*
728x90
제일먼저 프로젝트 - 구성요소에서 Winsock 를 추가합니다.

아래와 같은 내용으로 폼 에 추가합니다.

Text1 - 채팅 내용 (속성에 MultiLine 을 True로 해줍니다.)
Text2 - 닉네임
Text3 - 보낼 내용
Command1 - 전송 버튼
Winsock1 - 서로 주고 받는 매개체

아래는 서버의 소스 입니다.

Dim 내용 As String          '내용을 담을 문자 선언
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Private Sub Form_Load()    '폼이 열리면(서버 열기)
Winsock1.Close             '초기화(안해도됨)
Winsock1.LocalPort = 1234  '포트 설정(숫자로 아무거나 , 80 빼고...)
Winsock1.Listen            '대기합니다.
MsgBox "서버열림"           '메세지 뛰우기
End Sub
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)   '누가 접속을 요구합니다.
Winsock1.Close                       '초기화 해줍니다.
Winsock1.Accept requestID            '받아줍니다.
MsgBox "어떤사람이 접속 하였습니다."   '메세지 뛰워줍니다.
End Sub
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)'데이터가 들어오면....
Winsock1.GetData 내용          '그 데이터를 아까 맨위에 선언했던 "내용"에 담습니다.
Text1 = 내용                   '방금 담은 "내용"을 Text1에 넣어 줍니다.
End Sub
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Private Sub Command1_Click() '버튼 클릭하면...
On Error Resume Next            '에러나면 무시
Text1 = Text1 & Text2 & ">" & Text3 & vbNewLine 'Text1의 내용과 Text2(닉네임)+Text3(보낼 내용)+vbNewLine(줄바꾸기)로 Text1에 적용시켜 줍니다.
Winsock1.SendData Text1                                   '방금 적용시킨 내용을 클라이언트에 보내줍니다.
Text3 = ""   'Text3(보낼내용)을 초기화 시켜줍니다.
End Sub
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
이것만 있어도 채팅은 됩니다.
하지만 더 완벽하길 바란다면 아레 소스를 봐주세요.
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
'에러가 난다면.....
MsgBox "알수없는오류"   '메세지를 뛰워줍니다.
End       '종료합니다.
End Sub
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Private Sub Winsock1_Close()   '닫으려고 한다면.....
MsgBox "서버를 닫습니다."   '메세지를 뛰워줍니다.
End       '종료합니다.
End Sub
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ



폼에는 이렇게 넣어주세요.
Text1 - 채팅 내용 (속성에 MultiLine 을 True로 해줍니다.)
Text2 - 닉네임
Text3 - 보낼 내용
Text4 - 아이피
Text5 - 포트
Command1 - 전송 버튼
Command2 - 연결 버튼
Winsock1 - 서로 주고 받는 매개체

아래는 클라이언트 소스입니다.
Dim 내용 As String
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Private Sub Command2_Click()    '연결 버튼 클릭하면...
Winsock1.Connect Text4, Text5   ' "아이피, 포트" 로 연결합니다.

End Sub
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Private Sub Winsock1_Connect()   '접속이 되면....
MsgBox "접속 완료"                '메세지를 띄웁니다.
End Sub
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)   '데이터가 들어오면....
Winsock1.GetData 내용  
'그 데이터를 아까 맨위에 선언했던 "내용"에 담습니다.
Text1 = 내용            '방금 담은 "내용"을 Text1에 넣어 줍니다.
End Sub
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Private Sub Command1_Click() '버튼 클릭하면...
On Error Resume Next            '에러나면 무시
Text1 = Text1 & Text2 & ">" & Text3 & vbNewLine 'Text1의 내용과 Text2(닉네임)+Text3(보낼 내용)+vbNewLine(줄바꾸기)로 Text1에 적용시켜 줍니다.
Winsock1.SendData Text1                                   '방금 적용시킨 내용을 서버에 보내줍니다.
Text3 = ""   'Text3(보낼내용)을 초기화 시켜줍니다.
End Sub
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
기본적인 채팅 클라이언트 소스는 위 까지이지만
아래는 에러에 관한 처리부분입니다. 추가하셔도 좋습니다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
'에러가 난다면.....
MsgBox "알수없는오류"   '메세지를 뛰워줍니다.
End       '종료합니다.
End Sub
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Private Sub Winsock1_Close()   '닫으려고 한다면.....
MsgBox "연결을 끊습니다."   '메세지를 뛰워줍니다.
End       '종료합니다.
End Sub
'ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

profile

Syncope.T-*

@Syncope

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...