5421|14

57

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

大伙帮我看看, 我都要急死了。 这程序死活调试不通。 [复制链接]

来自EEWORLD合作群:499581  群主:wangkj

#define SERVER_ADDRESS "172.72.101.150"
#define PORT 80
#define MSGSIZE 10240

#pragma comment(lib, "Ws2_32.lib")

#define HTTP "GET /add.asp?input=11 HTTP/1.1\r\n\
Accept: */*\r\n\
Referer: http://172.72.101.150\r\n\
Accept-Language: zh-cn\r\n\
Accept-Encoding: gzip, deflate\r\n\
Host: 172.72.101.150\r\n\
Connection:close"

int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsaData;
SOCKET sClient;
SOCKADDR_IN server;
char szMessage[MSGSIZE] = {0};
int ret;

// Initialize Windows socket library
WSAStartup(0x0202, &wsaData);

sClient = socket(AF_INET, SOCK_STREAM, 0);

memset(&server, 0, sizeof(SOCKADDR_IN));
server.sin_family = AF_INET;
server.sin_addr.S_un.S_addr = inet_addr(SERVER_ADDRESS);
server.sin_port = htons(PORT);

int rr = connect(sClient, (struct sockaddr *)&server, sizeof(SOCKADDR_IN));
memcpy(szMessage, HTTP, strlen(HTTP));
int num = strlen(szMessage);
// Send message
int ss = send(sClient, szMessage, strlen(szMessage), 0);
char *buff=new char[10240];
memset(buff, 0, 10240);
// Receive message
ret = recv(sClient, buff, 10240, 0);
free(buff);

// Clean up
closesocket(sClient);
WSACleanup();
return 0;
}

最新回复

判断一下send的返回值 你这些程序对返回值都没有判断 也就是说对错误信息没有捕获 win socket是很简单的 你能 调web 服务服务器吗?  详情 回复 发表于 2010-4-28 15:53
点赞 关注
 
 

回复
举报

57

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
每次执行到 recv 的时候就 阻塞在这里了。
web 服务时 接受input 的值, 然后存放于数据库。
现象是: 当客户端程序 阻塞到 recv 的时候, 数据库没有数据, 但是 我按中止调试之后, 数据库就有了
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
send(sClient, szMessage, strlen(szMessage), 0);
发送成功了的?
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

4
 
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(初级)

5
 
ret = recv(sClient, buff, 10240, 0);
准备接受什么?
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

6
 
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

7
 
GET /add.asp?input=11 HTTP/1.1
Accept: */*
Referer: http://172.72.101.150
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
Host: 172.72.101.150
Connection:close
准备接受 http 的响应。
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(初级)

8
 
你怎么判断是阻塞在recv的
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

9
 
因为我单步执行到 recv 这里 就不走了。
 
 
 

回复

27

帖子

0

TA的资源

一粒金砂(初级)

10
 
你再看下套接字的应用这个过程对不对,仔细检查下。是不是差了哪一步。
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(初级)

11
 
你还不如在recv后面打调试全速运行
套接字没什么
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

12
 
全速运行也是阻塞在 recv
int ss = send(sClient, szMessage, strlen(szMessage), 0);
当我执行这一步的时候, web服务器 没有将数据写进数据库。

在执行 recv 就阻塞了。 然后我中断程序, 数据库才会被写进去。

这是为什么? 我觉得他应该在 send 之后就写数据库的呀。
 
 
 

回复

27

帖子

0

TA的资源

一粒金砂(初级)

13
 
你在send后面sleep一会。
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(初级)

14
 
判断一下send的返回值
你这些程序对返回值都没有判断 也就是说对错误信息没有捕获
win socket是很简单的
你能 调web 服务服务器吗?
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

15
 
能调
send的返回值我单步调试判断的。
是正确的。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表