WinSock2 네트워크 프로그래밍 단계(서버측)
7694 단어 네트워크 프로그래밍
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_hSocket = NULL;
isServerStart=FALSE;
ChatEnable=FALSE;
2, WSAstartup 함수를 호출하여 WinSock DLL 초기화
WSADATA wsaData;// ,
WORD version = MAKEWORD(2, 0);//
int ret = WSAStartup(version, &wsaData);// 0
if(ret != 0)
TRACE("Initilize Error!
");
3. Socket 소켓 만들기
//AF_INET Internet ,SOCK_STREAM ( SOCK_DGRAM),0 TCP/IP
m_hSocket = socket(AF_INET, SOCK_STREAM,0);
if (m_hSocket==INVALID_SOCKET)
{
AfxMessageBox("Socket Create Error!");
return;
}
4、로컬 주소와 소켓을 바인딩
m_addr.sin_family = AF_INET;//Internet
m_addr.sin_addr.S_un.S_addr = INADDR_ANY;//
m_addr.sin_port = htons(1029);//
int ret = 0;
int error = 0;
ret = bind(m_hSocket, (LPSOCKADDR)&m_addr, sizeof(m_addr));//
error = WSAGetLastError();
if(ret == SOCKET_ERROR)
{
list->AddString(" :Bind Error!");
return ;
}
5. 감청 스레드 만들기
DWORD dwthread;//unsigned long
::CreateThread(NULL,0,listenthread,(LPVOID)m_hSocket,0,&dwthread);//listenthread ,(LPVOID)m_hSocket
6. 스니퍼 Listen 함수 호출
DWORD WINAPI listenthread(LPVOID lpparam)// LPVOID lpparam
{
SOCKET m_socket=(SOCKET)lpparam;//
int ret;
ret=listen(m_socket,30);
if(ret==SOCKET_ERROR)
{
ListInfo=_T("Listen Error!");
return 0;
}
SOCKET s;
s=accept(m_socket,NULL,NULL);
DWORD dwthread;
::CreateThread(NULL,0,Recvthread,(LPVOID)s,0,&dwthread);
::CreateThread(NULL,0,Sendthread,(LPVOID)s,0,&dwthread);
return 0;
}
7. 메시지 수신과 메시지 발송 순환
// Recvthread
while(1)
{
ret=recv(m_socket,buff,256,0);
if(ret==SOCKET_ERROR)
{
ListInfo=_T("Socket Receive Error!");
closesocket (m_socket);
}
buff[ret]='\0';
CString str;
str=" :";
str=str+buff;
ListInfo=str;
}
// Sendthread
while(1)
{
if (ChatInfo.GetLength()>0)
{
ret=send(m_socket,ChatInfo,ChatInfo.GetLength(),0);
if(ret==SOCKET_ERROR)
{
ListInfo=_T(" :Data send error!");
return -1;
}
ListInfo=_T(" :");
ListInfo+=ChatInfo;
ChatInfo.Empty();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 네트워크 프로그래밍 기본 자습서의 Socket 시작 사례우리가 자바에서 TCP/IP를 사용하여 네트워크를 통해 서버에 연결하려면 자바를 만들어야 합니다.net.Socket 객체를 서버에 연결합니다.Java NIO를 사용하려는 경우 Java NIO의 SocketChanne...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.