#include "winsock2.h"
#include "stdlib.h"
#include "string.h"
#pragma comment (lib,"wsock32.lib")
#pragma comment (lib,"ws2_32.lib")SOCKET listensocket;//定义为全局变量if((listensocket=socket(AF_INET,SOCK_DGRAM,0))==INVALID_SOCKET ) {
AfxMessageBox("socket()调用失败"); }每次运行都提示失败,不知道为什么。谢谢各位大侠指教。

解决方案 »

  1.   

    是不是没调用SWAStartUp??用WSAGetLastError()取错误码发出来看看。
      

  2.   

    谢谢,确实是没调用WSAStartup,但是新问题又出现了,sockaddr_in local;local.sin_family=AF_INET;
    local.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
    local.sin_port=8000;if(bind(listensocket,(struct sockaddr *)&local,sizeof(local)==SOCKET_ERROR))
    {
    AfxMessageBox("bind()调用失败");
    }运行提示失败,谢谢指教
      

  3.   

    if(bind(listensocket,(struct sockaddr *)&local,sizeof(local)==SOCKET_ERROR))
    {
    AfxMessageBox("bind()调用失败");
    TRACE("error is %d,",GetLastError());
    }TRACE()输出0
      

  4.   

    SOCKADDR_IN local;//修改
    local.sin_family=AF_INET;
    local.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
    local.sin_port=htons(8000);//修改
    if(bind(listensocket,(struct sockaddr *)&local,sizeof(local)==SOCKET_ERROR))
    {
    AfxMessageBox("bind()调用失败");
                      TRACE("error is %d,",WSASetLastError());//修改
    }
    先这样试试,看行不行.
      

  5.   

    saddr.sin_family = AF_INET;
        saddr.sin_addr.s_addr = inet_addr("192.168.10.52");     
        saddr.sin_port = htons(9009);
        if((s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==SOCKET_ERROR)
        {
            printf("error!socket failed!\n");
            return ;
        }    if(bind(s,(SOCKADDR *)&saddr,sizeof(saddr))==SOCKET_ERROR)
        {
            ret=GetLastError();
            printf("error!bind failed!\n");
            return ;
        }
      

  6.   

    local.sin_addr.S_un.S_addr = htonl(INADDR_ANY);改为saddr.sin_addr.s_addr = htonl(INADDR_ANY);
      

  7.   

    还是不行啊,总提示失败,郁闷ing~~~~~~!