我写的程序要完成的功能是通过pc机 用飞信的api给手机发短信
但是在connect()的时候总是失败的  代码如下
static SOCKET SeverSocket = INVALID_SOCKET;
static sockaddr_in destination_sin;
static PHOSTENT phostent = NULL;
static WSADATA WSAData; if(WSAStartup(MAKEWORD(1,1),&WSAData) != 0)
{
printf("wsastartup failed\n");
return false;
} if((SeverSocket = socket(AF_INET,SOCK_STREAM,0)) == INVALID_SOCKET)
{
printf("Create a socket failed\n");
return false;
} destination_sin.sin_family = AF_INET;
destination_sin.sin_addr.s_addr = INADDR_ANY; 
destination_sin.sin_port = 0;//问一下  这里写的是自己pc机的端口 还是 服务器的端口? if(connect(SeverSocket,(PSOCKADDR)&destination_sin,
sizeof(destination_sin)) == SOCKET_ERROR)
{
printf("connecting to the sever failed\n");
return false;
} static const char* protocolHead="POST http://sms.api.bz/fetion.php?username=13918702641&password=041026&sendto=13918702641&message=hello world";  //这个是飞信的api接口,但是不知道这样send对吗?
if(send(SeverSocket, protocolHead,strlen(protocolHead),0) == SOCKET_ERROR)
{
printf("send error\n");
return false;
}
closesocket(SeverSocket);
WSACleanup();
return 0;
很急  大家帮忙啊

解决方案 »

  1.   


    destination_sin.sin_port = 0 .服务器的端口
      

  2.   

    服务器端口另外,飞信API调用方式,应当联系接口提供人员确认,或者查看相应文档
      

  3.   

    你有飞信开发的资料吗?个人感觉很不容易
    你是想自己处理与谁的链接?怎样调用飞信的api?要是你自己处理与服务器的链接,当然填写服务器的地址
      

  4.   

    1.在connect前,你需要bind,你在connect前得那段初始化地址得代码适合于bind,而不是connect
    2. connect得地址必须指向对方地址因此你在编写代码时(可能是抄谁代码时)露掉了一段,比较一下下面得代码
    //下面地址是for bind的
    sockaddr_in localaddr;
    memset(&localaddr, 0, sizeof(localaddr));
    localaddr.sin_family = AF_INET; 
    localaddr.sin_addr.s_addr = INADDR_ANY; 
    localaddr.sin_port = 0;//这是客户端本地端口,0表示让系统随便给你一个if(SOCKET_ERROR == bind(ServerSocket, (SOCKADDR*) &localaddr),sizeof(localaddr)))
    {
        perror("bind");// 注意打印错误的方式,你那种方式不能表明到底什么原因失败
        return false;
    }sockaddr_in remoteaddr;
    memset(&remoteaddr, 0, sizeof(remoteaddr));
    remoteaddr.sin_family = AF_INET; 
    remoteaddr.sin_addr.s_addr = inet_addr("192.168.0.1");//这里妖换成对方的ip 
    remoteaddr.sin_port = htons(1000); //这里妖换成对方的端口
    if(connect(SeverSocket,(PSOCKADDR)&remoteaddr, 
    sizeof(remoteaddr)) == SOCKET_ERROR) 

        perror("connect");
        return false;