#include <winsock2.h>

添加连接库wsock32

void WinSocket()
{
 WSADATA wsaData; 
 WSAStartup(MAKEWORD(2, 0), &wsaData);//初始化Socket库,“2,0”为版本号。
 SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//套接字,即连接线。
 SOCKADDR_IN sa;
 sa.sin_family = AF_INET; 
 sa.sin_port = htons(IPPORT_SMTP);//设置连接服务器端端口
 sa.sin_addr.S_un.S_addr = inet_addr("123.125.50.135");//123.125.50.135是ping smtp.163.com出来的,后面会讲使用gethostbyname来直接从主机名得到ip地址。
 //客户端端口动态分配、自动生成。
 if(connect(sock, (SOCKADDR *)&sa, sizeof(sa)) == SOCKET_ERROR)
 {
  ShowError();
  return;
 }
    //
    // Add code here
    //
 TCHAR cBuffer[256];
 ZeroMemory(cBuffer, sizeof(cBuffer));
 //接收登录消息
 recv(sock, cBuffer, 256, 0);
 MessageBox(NULL, cBuffer, "", 0);
 //注意不要忘了末尾的回车
 TCHAR cQuit[] = "QUIT\n";
 send(sock, cQuit, lstrlen(cQuit), 0);
 ZeroMemory(cBuffer, sizeof(cBuffer));
 //接收退出消息
 recv(sock, cBuffer, 256, 0);
 MessageBox(NULL, cBuffer, "", 0);
 
 closesocket(sock);
 WSACleanup();
}

void ShowError()
{
 TCHAR* lpMsgBuf;
 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |//自动分配消息缓冲区
 FORMAT_MESSAGE_FROM_SYSTEM, //从系统获取信息
 NULL, GetLastError(), //获取错误信息标识
 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //使用系统缺省语言
 (LPTSTR)&lpMsgBuf, //消息缓冲区
 0, NULL);
 MessageBox(NULL, lpMsgBuf, TEXT("错误信息"), MB_ICONERROR);
}