我在想是否可以轻松地将printf或cout重定向到套接字?
我目前正在使用Windows VC ++编程btw ...
答案 0 :(得分: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 ++中,您还可以使用std::ostringstream
获得类似的结果:
std::ostringstream buffer;
buffer << "test: " << myvar << somethingelse << etc;
send(mySocket, buffer.str().c_str(), buffer.str().size() + 1, 0);
// +1 for NUL terminator
答案 1 :(得分:1)
不是琐碎的。在WinSock(MS Windows)中,世界套接字与文件描述符不同。
答案 2 :(得分:1)
Linux有dprintf(),它允许你写入套接字文件描述符。
int dprintf(int fd, const char *format, ...);