Winsock套接字不能用 _open_osfhandle()函数映射为一个流文件

 
Winsock套接字不能用 _open_osfhandle()函数映射为一个流文件
       _open_osfhandle()函数在windows下可以将一个win32打开的文件句柄映射成为一个普通的C库里面的流文件接口,参见下例:
void OSFileToCRTFile()
       {
              HANDLE hFile = CreateFile("c://test.dat", GENERIC_READ | GENERIC_WRITE, 0, NULL,
              OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 
              char szText[] = "Hello world!/n";
              DWORD dwWritten;
              WriteFile(hFile, szText, strlen(szText), &dwWritten, NULL);
 
              FILE* pFile = NULL;
              int nHandle = _open_osfhandle((long)hFile, _O_TEXT | _O_APPEND);
              if (nHandle != -1)
              pFile = _fdopen(nHandle, "wt");
 
              if(pFile)
              {
                     int n = fputs("write by FILE*!", pFile);
                     fflush(pFile);// 立即写入文件
                     // n == 0
              }
 
              CloseHandle(hFile);
       }
在Linux下可以不必用这个函数,Linux的世界里都是文件,但是在windows下对套接字winsock却不可以这样映射,已经试验验证过了。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值