容易的socket 通信程序,accept失败

简单的socket 通信程序,accept失败
服务器:

#include <WinSock2.h>
#include <iostream>
#include <string>
using namespace std;
#pragma comment(lib,"WS2_32.LIB")

int main()
{
WSADATA wsadata;
SOCKET listenSocket;
SOCKET newSocket;

SOCKADDR_IN serverAddr,clientAddr;

int len;

WSAStartup(MAKEWORD(2,2),&wsadata);

listenSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if (listenSocket == INVALID_SOCKET)
{
cout<<"create listenSocket failured"<<endl;
}

serverAddr.sin_family = AF_INET;
serverAddr.sin_port= htons(5150);
serverAddr.sin_addr.s_addr = inet_addr("172.16.1.45");

int iRet = bind(listenSocket,(SOCKADDR*)&serverAddr,sizeof(serverAddr));
if (-1 == iRet)
{
cout<<"bind failed"<<endl;
}

iRet = listen(listenSocket,5);
if (-1 == iRet )
{
cout<<"listen failed"<<endl;
}

while(1)
{
newSocket = accept(listenSocket,(SOCKADDR*)&clientAddr,&len);
if (INVALID_SOCKET == newSocket)
{
cout<<"accept new socket error"<<endl;
continue;
}
char buf[100];
memset(buf,0,100);
int n = recv(newSocket,buf,100,0);
if (n > 0)
{
cout<<buf<<endl;
}
closesocket(newSocket);
}
closesocket(listenSocket);

system("pause");

return 0;
}


客户端:

#include <WinSock2.h>
#include <iostream>
#include <string>
using namespace std;
#pragma comment(lib,"WS2_32.LIB")
int main()
{
WSADATA wsadata;
SOCKET s;
SOCKADDR_IN serverAddr;

WSAStartup(MAKEWORD(2,2),&wsadata);

s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

serverAddr.sin_family = AF_INET;
serverAddr.sin_port= htons(5150);
serverAddr.sin_addr.s_addr = inet_addr("172.16.1.45");

int ierror = connect(s,(SOCKADDR*)&serverAddr,sizeof(serverAddr));

if (ierror == SOCKET_ERROR)
{
cout<<"connect failure"<<endl;
return 0;
}

string str;
cin>>str;

int iRet = send(s,str.c_str(),str.length(),0);
if (SOCKET_ERROR == iRet)
{
cout<<"send failure"<<endl;
}

closesocket(s);

system("pause");

return 0;
}



调试了下,发现客户端能connect 上,也能发送,但是服务器那边accept的时候总是失败,不知道为何,求解答啊。
------解决思路----------------------
len = sizeof(clientAddr);
newSocket = accept(listenSocket,(SOCKADDR*)&clientAddr,&len);