我写的程序要完成的功能是通过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;
很急 大家帮忙啊
但是在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;
很急 大家帮忙啊
解决方案 »
- VS2005写的程序,在debug和relese下都可以调试运行,但是exe却运行错误,急,急 ,急 ~~~~~~~~~
- 如何做多线程
- C语言中,二进制文件读写,及压缩存储问题。(C语言区无人回答呀)
- 烦人的事情又回来了.
- 如何让CFileDialog记住上次文件打开的路径?
- 一个非常有意义的问题
- 怎么给基于ATL(不支持MFC)的控件加个右键菜单
- MDI问题,进者有分
- 关于LISTVIEW扩展的问题
- 谁有数据挖掘系统源代码?请发到[email protected]
- 求助AfxBeginThread参数传入问题
- 在安装IE插件即加载项时,弹出安装对话框时,如何利用BHO获得这个对话框的名字和点击的是哪个按钮?
destination_sin.sin_port = 0 .服务器的端口
你是想自己处理与谁的链接?怎样调用飞信的api?要是你自己处理与服务器的链接,当然填写服务器的地址
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;
}