0

我在想是否可以轻松地将 printf 或 cout 重定向到套接字?

我目前正在使用 Windows VC++ 编程...

4

3 回答 3

2

不,但您可以使用sprintf函数族:

// Make sure this buffer is big enough; if the maximum size isn't known, use
// _vscprintf or a dynamically allocated buffer if you want to avoid truncation
char buffer[2048];
_snprintf_s(buffer, sizeof(buffer), _TRUNCATE, "format %s etc.", args...);
send(mySocket, buffer, strlen(buffer)+1, 0);  // +1 for NUL terminator

请注意,这_snprintf_s是 Microsoft 仅运行时功能,因此如果您正在编写可移植代码,请snprintf在其他平台上使用。

在 C++ 中,您也可以使用 astd::ostringstream来获得类似的结果:

std::ostringstream buffer;
buffer << "test: " << myvar << somethingelse << etc;
send(mySocket, buffer.str().c_str(), buffer.str().size() + 1, 0);
                                                     // +1 for NUL terminator
于 2012-05-08T03:20:55.147 回答
2

Linux 有 dprintf() 允许您写入套接字文件描述符。

int dprintf(int fd, const char *format, ...);

http://linux.about.com/library/cmd/blcmdl3_dprintf.htm

于 2013-02-21T20:25:32.177 回答
1

不是微不足道的。在 WinSock (MS Windows) 世界中,套接字与文件描述符不同。

于 2012-05-08T03:06:12.893 回答