windows c语言 winsock fdopen()如何处理 ,fprintf()如何处理。

清风小帅 2011-10-21 05:53:59
事件经过:
windows c语言写 一个简单 http服务器。 客户端为 浏览器
1、winsock 已经可以通信
2、已经接收到 浏览器的 GET / HTTP/1.1 ....
3、如何从 服务器 发送 给 浏览器 让其 响应
(linux c 环境下已经成功发送
FILE *fp = fdopen(fd, "w");

fprintf(fp, "HTTP/1.0 404 Not Found\r\n");
fprintf(fp, "Content-type: text/plain\r\n");
fprintf(fp, "\r\n");

fprintf(fp, "The item you requested: %s\r\nis not found\r\n", item);
fclose(fp);

就发送了成功)

但是 windows 下使用 fdopen 会报警告!
http://115.com/file/aq6lp43d#未命名.bmp

比较急用,请高手帮忙回答。非常感谢,谢谢!

...全文
197 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tsh185 2011-10-22
  • 打赏
  • 举报
回复


#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <share.h>

int main( void )
{
FILE *stream;
int fd, count = 0;
char inbuf[128];

// Open a file.
if( _sopen_s( &fd, "crt_fdopen.txt", _O_RDONLY, _SH_DENYNO, 0 ) )
exit( 1 );

// Get stream from file descriptor.
if( (stream = _fdopen( fd, "r" )) == NULL )
exit( 1 );

while( fgets( inbuf, 128, stream ) != NULL )
count++;

// After _fdopen, close with fclose, not _close.
fclose( stream );
printf( "Lines in file: %d\n", count );
}
tsh185 2011-10-22
  • 打赏
  • 举报
回复
[code c/c++]
FILE *_fdopen(
int fd,
const char *mode
);

FILE *_wfdopen(
int fd,
const wchar_t *mode
);
[/code]
Lovey2010 2011-10-21
  • 打赏
  • 举报
回复
你可以先确认以下windows下有没有fdopen函数,可以确认Linux环境是存在该函数,建议你修改为fopen试试。
proorck6 2011-10-21
  • 打赏
  • 举报
回复
我用的都是fopen,什么是fdopen?
qq120848369 2011-10-21
  • 打赏
  • 举报
回复
fdopen是给文件描述符封装一层buffer变成FILE*。

WINDOWS有文件描述符这个概念么= =。。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧