socket的服务器/客户端已经连接,但是一send/recv就出错。为何?该怎么处理

socket的服务器/客户端已经连接,但是一send/recv就出错。为何?
我写了一对非常简单的socket服务器端和客户端,代码如下。先启动服务端再启动客户端。
可是一连上,两端就报错,send error和recv error.

这是为什么呢? 高人帮忙教一下哈!

服务端:
C/C++ code
int _tmain(int argc, _TCHAR* argv[])
{
    WSADATA wsa;
    if(0!=WSAStartup(MAKEWORD(2,2),&wsa))return 1;
    SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//IPPROTO_TCP和0的区别在哪里?
    if(sockSrv==INVALID_SOCKET)return 1;
    SOCKADDR_IN sAddr;
    sAddr.sin_family=AF_INET;
    sAddr.sin_port  =htons(34567);
    sAddr.sin_addr.S_un.S_addr =htonl(INADDR_ANY);
    if(SOCKET_ERROR == bind( sockSrv, (LPSOCKADDR)&sAddr, sizeof( SOCKADDR )))return 1;
    if(SOCKET_ERROR == listen(sockSrv,0))return 1;//backlog的作用是什么?
    int cbAddr = sizeof(SOCKADDR);
    while(1){
        SOCKET hAccSocket = accept(sockSrv, (SOCKADDR*)&sAddr, &cbAddr );
        if(hAccSocket==INVALID_SOCKET)return 1;
        printf("Accepted!\n");
        while(1){
            if(SOCKET_ERROR == send(sockSrv,"Hi",3,0) ){
                printf("send error\n");
                break;
            }
            printf("data sent\n");
        }
        closesocket(hAccSocket);
    }
    WSACleanup();
    return 0;
}

客户端:
C/C++ code
int _tmain(int argc, _TCHAR* argv[])
{
    WSADATA wsaData;
    if(0!=WSAStartup(MAKEWORD(2,2), &wsaData ))return 1;
    SOCKET hClient=socket(AF_INET,SOCK_STREAM,0);
    if(hClient==INVALID_SOCKET)return 1;
    SOCKADDR_IN sAddr;
    sAddr.sin_family=AF_INET;
    sAddr.sin_port  =htons(34567);
    sAddr.sin_addr.S_un.S_addr =inet_addr("127.0.0.1");
    if( SOCKET_ERROR==connect( hClient, (LPSOCKADDR)&sAddr, sizeof(SOCKADDR) ) )return 1;
    while(1){
        char buf[10]={0};
        if(0>=recv(hClient,buf,10,0)){
            printf("recv error\n");
            break;
        }
        printf("received %s\n",buf);
        Sleep(5000);
    }
    closesocket(hClient);
    WSACleanup();
    return 0;
}



------解决方案--------------------
服务器端发的太快了,Sleep一下
------解决方案--------------------
if(SOCKET_ERROR == send(hAccSocket,"Hi",3,0) ){
------解决方案--------------------
探讨
我写了一对非常简单的socket服务器端和客户端,代码如下。先启动服务端再启动客户端。
可是一连上,两端就报错,send error和recv error.

这是为什么呢? 高人帮忙教一下哈!

服务端:
C/C++ code
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsa;
if(0!=WSAStartup(M……

------解决方案--------------------
C/C++ code
if(SOCKET_ERROR == send(sockSrv,"Hi",3,0) ){
                printf("send error\n");
                break;