来自客户端部分的代码(使用 )
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是一个文件处理程序,所以我可以做到,但是怎么做?
答案 0 :(得分:1)
对于 C代码,您可以使用像FILE *这样的描述符来调用fdopen():将流与文件描述符(POSIX.1标准)相关联。
答案 1 :(得分:0)
如果您因为想要表现良好而提出此问题:
在linux上你可以使用sendfile
,这适用于简单的文件描述符(fd):
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
其他一些unix系统也支持这个API调用,但它不是POSIX的一部分,所以它不可移植。
答案 2 :(得分:0)
我认为你需要继承std::streambuf
以实现你想要的目标。