0

printfまたはcoutをソケットに簡単にリダイレクトできるかどうかを考えていますか?

私は現在WindowsVC++でプログラミングしています...

4

3 に答える 3

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 に答える
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同様の結果を得るために a を使用することもできます。

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 に答える
1

些細なことではありません。WinSock(MS Windows)では、ワールドソケットはファイル記述子と同じではありません。

于 2012-05-08T03:06:12.893 に答える