SOCKET m_socket;
WSAEVENT hEvent;
struct sockaddr_in client_addr;
char ReceiveText[256];
int length;
//----------------------------------------------------------------
//开了个线程
DWORD WINAPI ThreadMessageProc(LPVOID lParam) 
{
MSG Msg; //定义枚举网络事件
WSANETWORKEVENTS hNetEvent;
WSAEVENT EventArray[WSA_MAXIMUM_WAIT_EVENTS]; while(true) 
{
//每次等待半秒钟,看看是否有网络事件到来.
int nReturnCode = ::WSAWaitForMultipleEvents(1, EventArray, FALSE, 500, FALSE);  //枚举网络事件
WSAEnumNetworkEvents( m_socket, hEvent, &hNetEvent); //FD_READ消息产生
if( (hNetEvent.lNetworkEvents & FD_READ) && (hNetEvent.iErrorCode[FD_READ_BIT] == 0) )
{
length = recv( m_socket, ReceiveText, 256, 0);
ReceiveText[length] = '\0';
cout << ReceiveText << endl;
} if( (hNetEvent.lNetworkEvents & FD_WRITE) && (hNetEvent.iErrorCode[FD_WRITE_BIT] == 0) )
{
} if( (hNetEvent.lNetworkEvents & FD_CLOSE) && (hNetEvent.iErrorCode[FD_CLOSE_BIT] == 0) )
{
} if( (hNetEvent.lNetworkEvents & FD_CONNECT) && (hNetEvent.iErrorCode[FD_CONNECT_BIT] == 0) )
{
}

} //主函数
int main(void)
{
wcout.imbue( std::locale ( "CHS" ) );
wcout << endl << L"                            聊天室程序客户端!" << endl << endl; //hWnd = GetConsoleWindow();//得到窗口句柄
DWORD ThreadId;//创建的消息循环线程的线程号
CreateThread( NULL, 0, ThreadMessageProc, NULL, 0, &ThreadId);
Sleep(1000);
//初始化Winsock 2.0
wcout << L"正在装载Winsock.dll库!" << endl;
WSADATA WSAData;
if( WSAStartup(0x0002,&WSAData) != 0 )
{
wcout << L"Winsock2.0初始化失败!" << endl;
WSACleanup();
return -1;
} //建立一个SOCKET
wcout << L"正在创建套接字!" <<endl;
m_socket = socket( AF_INET, SOCK_STREAM, 0);
if( m_socket == SOCKET_ERROR )
{
wcout << L"建立套接字失败!" <<endl;
WSACleanup();
return -1;
} //定义网络事件
hEvent = WSACreateEvent(); //事件
wcout << L"正在创建事件模式!" <<endl;
if( WSAEventSelect( m_socket, hEvent, FD_READ | FD_WRITE | FD_CLOSE | FD_CONNECT ) > 0 )
{
wcout << L"创建网络异步模型失败!" <<endl;
WSACleanup();
return -1;
} //连接服务器
wcout << L"正在连接服务器!" <<endl;
client_addr.sin_family = AF_INET;//地址族
client_addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//目标IP
client_addr.sin_port = htons((u_short)5555);//端口
if( connect( m_socket, (LPSOCKADDR)&client_addr, sizeof(client_addr) ) != 0 )
{            //在这里就出错了 跳进来来了
wcout << L"连接服务器时发生错误!" <<endl;
WSACleanup();
return -1;    

//执行清理
WSACloseEvent(hEvent);
closesocket(m_socket);
WSACleanup(); return 0;
}
  服务器能够看到客户端已经连接了,客户端的线程里面也能收到服务端送来的消息(FD_READ)
可是 connect 的返回值不为0 ,  也就是connect出错 
明明连接上了 为什么又出错呢?