我这里有个程序,主要代码如下:
//把传递给它的字符串写到磁盘文件中
void LogFile(char *p)
{
FILE *fp=fopen(fname,"a+");
fprintf(fp,"%s\n",p);
fclose(fp);
} //通过Winsock连接到HTTP服务器上
//当连接成功后,发送Get命令到HTTP服务器去下载指定路径上(/web/update/)的文件
bool HttpClient(void)
{
WSADATA ws;
SOCKET s;
struct sockaddr_in addr;
int iResult;
long lResult;
char strSubAddr[100], strBuffer[10000];
lResult = WSAStartup(0x0101,&ws);
s = socket(AF_INET,SOCK_STREAM,0);
addr.sin_family = AF_INET;
addr.sin_port = htons(8080);
addr.sin_addr.s_addr = inet_addr("192.168.1.105");
iResult = connect(s,(struct sockaddr *)&addr, sizeof(addr));
if(SOCKET_ERROR == iResult)
{
// 连接失败
WSACleanup();
return false;
}
else
{
// 连接成功
strcpy(strSubAddr, "GET /web/update/ServerVer.txt \r\n");
strcpy(fname, "ServerVer.txt");
iResult = send(s, strSubAddr,strlen(strSubAddr),0);
printf("连接成功!");
// 下载文件
do
{
strset(strBuffer,' ');
iResult = recv(s,strBuffer,sizeof(strBuffer),0);
LogFile(strBuffer);
} while(iResult != 0);
}
WSACleanup();
return true;
}我现在已经搭建好了web服务器(tomcat搭建的),我现在想从我自己的这个web服务器上面http://localhost:8080/web/update/,这个路径下下载文件ServerVer.txt,但每次运行完程序后,在本地会有一个ServerVer.txt 的文件,里面却没有内容,请问哪位大神可以帮我解决一下这个问题,,感激不尽。。
//把传递给它的字符串写到磁盘文件中
void LogFile(char *p)
{
FILE *fp=fopen(fname,"a+");
fprintf(fp,"%s\n",p);
fclose(fp);
} //通过Winsock连接到HTTP服务器上
//当连接成功后,发送Get命令到HTTP服务器去下载指定路径上(/web/update/)的文件
bool HttpClient(void)
{
WSADATA ws;
SOCKET s;
struct sockaddr_in addr;
int iResult;
long lResult;
char strSubAddr[100], strBuffer[10000];
lResult = WSAStartup(0x0101,&ws);
s = socket(AF_INET,SOCK_STREAM,0);
addr.sin_family = AF_INET;
addr.sin_port = htons(8080);
addr.sin_addr.s_addr = inet_addr("192.168.1.105");
iResult = connect(s,(struct sockaddr *)&addr, sizeof(addr));
if(SOCKET_ERROR == iResult)
{
// 连接失败
WSACleanup();
return false;
}
else
{
// 连接成功
strcpy(strSubAddr, "GET /web/update/ServerVer.txt \r\n");
strcpy(fname, "ServerVer.txt");
iResult = send(s, strSubAddr,strlen(strSubAddr),0);
printf("连接成功!");
// 下载文件
do
{
strset(strBuffer,' ');
iResult = recv(s,strBuffer,sizeof(strBuffer),0);
LogFile(strBuffer);
} while(iResult != 0);
}
WSACleanup();
return true;
}我现在已经搭建好了web服务器(tomcat搭建的),我现在想从我自己的这个web服务器上面http://localhost:8080/web/update/,这个路径下下载文件ServerVer.txt,但每次运行完程序后,在本地会有一个ServerVer.txt 的文件,里面却没有内容,请问哪位大神可以帮我解决一下这个问题,,感激不尽。。
解决方案 »
- 关于调用默认的CDialog::OnPaint()的问题
- exe也可以象dll一样导出函数、变量和类吗?请大家多指导,谢谢
- TableCtrl如何更改背景等风格
- 请问网络传输前,大家通常是怎么样处理Unicode字符的?
- 有谁有隐藏进程的代码??
- 在vc里面CString如何把unicode转换成ansi,请大家指教!
- 用VC写的dll在delphi中调用,在单线程下没问题,而在多线程下就出错???
- 关于远程控制杀软拦截上线地址或者域名 问有大牛可以处理吗
- 指条路吧
- 如何利用winsock同时发送多个不同类型的数据?
- 请问visual studio 中的msdn如何使用?
- MFC,如何给另外窗体的控件赋值?
void LogFile(char *p)
{
FILE *fp=fopen(fname,"a+");fwrite(p,sizeof(p),1,fp);
fclose(fp);
}
do
{
iResult = recv(s,strBuffer,sizeof(strBuffer),0);
if( iResult == 0 )
break;
fwrite(strBuffer, 1, iResult,fp);
} while(iResult != 0);
fclose(fp);
加这个也不行呢
问题应该是在
do
{
strset(strBuffer,' ');
iResult = recv(s,strBuffer,sizeof(strBuffer),0);
LogFile(strBuffer);
} while(iResult != 0);
这里吧
strBuffer里面读不到数据呢不知道咋回事啊
strBuffer怎么没有内容呢
为什么strBuffer没有数据呢
strBuffer为什么没有数据呢??
大概扫视一番。
iResult = send(s, strSubAddr,strlen(strSubAddr),0); 你这句想干什?是不是告知服务器我要下载了?
接收的时候是没有错误的。当然要加上fwrite的。
如果我上面说的都对。就是你服务器处理问题
iResult = send(s, strSubAddr,strlen(strSubAddr),0); 这句就是告诉服务器要下载了吧。
然后iResult = recv(s,strBuffer,sizeof(strBuffer),0);就是收不到数据呢,执行此行代码后,iResult就变为0,socket就自动断开连接了,不知道这是为什么呢
void LogFile(char *p)
{
FILE *fp=fopen(fname,"a+");fwrite(p,sizeof(p),1,fp);
fclose(fp);
}