0

这是来自客户端部分的代码(使用)

   struct sockaddr_in stSockAddr;
   int Res;
   int SocketFD;
   SocketFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
   if (-1 == SocketFD)
   {
      perror("cannot create socket");
      exit(EXIT_FAILURE);
   }

    memset(&stSockAddr, 0, sizeof(stSockAddr));

    stSockAddr.sin_family = AF_INET;
    stSockAddr.sin_port = htons(8182);
    Res = inet_pton(AF_INET, "127.0.0.1", &stSockAddr.sin_addr);    

我得到服务器的响应,使用

   char buffer[4096] = "";
   n = read(aSocketFD, buffer, 4096);  

我的问题是:
我能得到像std::basic_filebuf这样的响应吗?或者我可以回复 FILE * 吗?Socket 是一个文件处理程序,所以我可以做到,但是怎么做呢?

4

3 回答 3

1

For C code, you can use a descriptor like FILE* calling fdopen(): associates a stream with a file descriptor (POSIX.1 standard).

于 2012-04-18T12:04:23.623 回答
0

如果你问这个是因为你想要好的性能:

在 linux 上你可以使用sendfile,这适用于简单的文件描述符(fd):

ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);

其他一些 unix 系统也支持这个 API 调用,但它不是 POSIX 的一部分,所以它不是可移植的。

于 2012-04-18T11:10:13.150 回答
0

我认为你需要子类std::streambuf来实现你想要的。

于 2012-04-18T11:18:08.183 回答