我写了一个socket的服务器程序,用TCP_tester传入数据,会出现这种现象,是不是我没对字符串数组进行初使化呢
while(1)
{
//等待客户请求到来
SOCKET  sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char  sendBuf[100];
sprintf(sendBuf,"welcom %s to http://www.sunxin.org",inet_ntoa(addrClient.sin_addr)); //发送数据
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char revBuf[100];
//接收数据
recv(sockConn,revBuf,100,0);
//打印接收的数据
printf("%s\n",revBuf);
closesocket(sockConn); }
当我输入i love china
输出 为i love china 烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫welcom 127.0.0.1 to http://sunixn.org
请问这是什么原因

解决方案 »

  1.   

    sendBuf
    revBuf
    数组都先初始化为0
      

  2.   

    char revBuf[100];
    memset(sendBuf,0,100);
    ……
    char revBuf[100];
    memset(revBuf,0,100);
      

  3.   

    www.sunxin.org~~_~~
    我记得孙老师这堂课是memset过的
      

  4.   


    char revBuf[100]={0};
    或者
    char revBuf[100];
    ZeroMemory(revBuf,sizeof(revBuf));
    或者
    char revBuf[100];
    memset(revBuf,0,100);
      

  5.   

    可以用new开辟内存,代码如下:
    char *revbuf;
    revbuf = new char[100];
    int rv =recv(sockConn,revBuf,100,0);//接受到的字符数
    revbuf[rv] = '\0';
    printf("%s\n",revBuf);
    delete []recbuf;//释放内存,防止内存泄露
    revbuf = NULL;//防止revbuf变成野指针这是我刚学的,应该可以的吧!!因为自己也遇到这样的问题,我做的是UDP的发送和接收!!