while (1)
{
char ss[100];
recv(aSock,ss,strlen(ss)+1,0);
printf("---->%s\n",ss);
char yy[100];
sprintf(yy,"client-->",inet_ntoa(addr_client.sin_addr));
send(aSock,yy,strlen(yy)+1,0);
}客户端部分代码,为什么sprintf(yy,"client-->",inet_ntoa(addr_client.sin_addr));返回给服务端的ip为null值?

解决方案 »

  1.   

    recv(aSock,ss,strlen(ss)+1,0);
    --
    strlen(ss)的返回值是不确定的sprintf(yy,"client-->",inet_ntoa(addr_client.sin_addr));
    addr_client在哪定义的?
      

  2.   

    还有
    sprintf(yy,"client-->%s",inet_ntoa(addr_client.sin_addr));
      

  3.   

    #include <stdio.h>
    #include <winsock2.h>void main()
    {
    WSADATA aWsadata;
    WORD aWord;
    aWord=MAKEWORD(1,1);
    int err;
    err=WSAStartup(aWord,&aWsadata); if(err!=0)
    {
    printf("link err!");
    return;
    }
    if(LOBYTE(aWsadata.wVersion)!=1 || HIBYTE(aWsadata.wVersion!=1))
    {
    printf("ver err");
    return;
    } SOCKET aSock=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addr_client;
    addr_client.sin_family=AF_INET;
    addr_client.sin_port=htons(60000);
    addr_client.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

    int conn_err;
    conn_err=connect(aSock,(SOCKADDR*)&addr_client,sizeof(addr_client));
    if (conn_err!=0)
    {
    printf("link err");
    return;
    }
    while (1)
    {
    char ss[100];
    recv(aSock,ss,strlen(ss)+1,0);
    printf("---->%s\n",ss);
    char yy[100];
    sprintf(yy,"client-->",inet_ntoa(addr_client.sin_addr));
    send(aSock,yy,strlen(yy)+1,0);
    }
    closesocket(aSock);
    }