首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于SOCKET的有关问题

2012-03-05 
关于SOCKET的问题大家看看这样的socket中使用POST格式对不对?...charstrPOST[4000]memset(strPOST,0x00,4

关于SOCKET的问题
大家看看这样的socket中使用POST格式对不对?
...
char   strPOST[4000];
memset(strPOST,   0x00,   4000);
...
strcpy(strPOST,   "POST   check.asp/makeLogin?agent   HTTP/1.1\r\n ");
strcat(strPOST,   "Accept:   */*\r\n ");
strcat(strPOST,   "Accept-Language:   zh-cn\r\n ");
strcat(strPOST,   "User-Agent:   Mozilla/4.0   (compatible;   MSIE   5.01;   Windows   NT   5.0;     MSIE   6.01)\r\n ");
strcat(strPOST,   "Host:   172.28.118.12:80\r\n ");
strcat(strPOST,   "Content-Length:   1309568\r\n ");
strcat(strPOST,   "Content= <?xml   version= "1.0 "   encoding= "UTF-8 "?> <user> <type> 1 </type> <notesId> abcc </notesId> <loginName> 54321 </loginName> </user> \r\n ");
strcat(strPOST,   "Connection:   Keep-Alive\r\n ");
strcat(strPOST,   "\r\n ");
...
send(s,   strPOST,   strlen(strPOST),0);
...


[解决办法]
你是想按照XML的方式来传送消息吧.没看出有什么问题.
[解决办法]
先判断send的返回值
[解决办法]
...
strcpy(strPOST, "POST check.asp/makeLogin?agent HTTP/1.1\r\n ");
strcat(strPOST, "Accept: */*\r\n ");
strcat(strPOST, "Accept-Language: zh-cn\r\n ");
strcat(strPOST, "User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MSIE 6.01)\r\n ");
strcat(strPOST, "Host: 172.28.118.12:80\r\n ");
strcat(strPOST, "Content-Length: 1309568\r\n ");

/*这个语句中, 复制的字符串内部的 引号需要使用转义表达*/
strcat(strPOST, "Content= <?xml version=\ "1.0\ " encoding=\ "UTF-8\ "?> <user> <type> 1 </type> <notesId> abcc </notesId> <loginName> 54321 </loginName> </user> \r\n ");

strcat(strPOST, "Connection: Keep-Alive\r\n ");
strcat(strPOST, "\r\n ");
...
[解决办法]
"收到SERVER那里的信息为空, "

你用的阻塞模式还是非阻塞模式?
[解决办法]
如果是非阻塞模式,SEND的返回值为10054的话,那就很正常了,改为阻塞模式,用ioctlsocket
[解决办法]
WSAGetLastError()的返回值为10054的话,那就证明数据量太大,在非阻塞模式下,无法立即得到数据.
[解决办法]
send返回374证明发送了374个字节流,应该没有问题
recv返回-1,证明没有接收到,你是不是为非阻塞模式?

热点排行