2011년 11월 11일 금요일

MFC SOCKET

MFC 에서 기본적인 소켓을 열기 위한 코드.
====================================================================
 SOCKET mysocket = INVALID_SOCKET;
 mysocket = socket(AF_INET, SOCK_STREAM, 0);
 if(mysocket == INVALID_SOCKET)
 {
  CString str;
  str.Format(_T("SOCKET mysocket init fail.(%d)"), WSAGetLastError());
  AppendRichEditText(str);
 }
 else
 {
  sockaddr_in addr = {0};
  int addrlen = sizeof(addr);
  addr.sin_family = AF_INET;
  addr.sin_addr.s_addr = inet_addr("192.168.0.38");
  addr.sin_port = htons(3211);
  int ret = connect(mysocket, (sockaddr *)&addr, addrlen);
  if(ret == SOCKET_ERROR)
  {
   AppendRichEditText(_T("SOCKET mysocket connect fail."));
  }
  else
  {
   AppendRichEditText(_T("dllcsta.CSTA_Client(mysocket);"));
   dllcsta.CSTA_Client(mysocket);
  }

====================================================================
위와 같이 코드를 작성하고 나서, 프로그램을 실행하고 동작을 하면
 아래와 같이 에러가 발생한다 (10093)

SOCKET mysocket init fail.(10093)
====================================================================
그러면 아래와 같이 생성자에 "AfxSocketInit();" 를 추가한다.
====================================================================
CABCDlg::CABCDlg(CWnd* pParent /*=NULL*/)
 : CDialog(CABCDlg::IDD, pParent)
{
 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
 AfxSocketInit();//요 친구를 추가하는 것이다
}
====================================================================
짜잔~
빌드중 아래와 같은 에러가 발생한다면...
abcdlg.cpp(0) : error C3861: 'AfxSocketInit': identifier not found

====================================================================
인클루드를 추가한다.
#include "afxsock.h"
====================================================================
====================================================================
여기까지다~ 이후에 발생한 에러는 삽질의 시작을 의미한다!!
====================================================================

0 개의 댓글:

댓글 쓰기