很可能是一個菜鳥問題,但我正在尋找一個printf
-esque函數,用於在TCP套接字上使用send
。這是一個簡單的聊天服務器,特別是Beej插座指南中的修改版本。我準備寫我自己的,但在我做之前我想確保我沒有重新發明輪子。是否有發送的fprintf?
我正在尋找C原生的東西,而不是圖書館或其他東西。我這樣做是爲了追求智力,使用現成的圖書館不會讓我感到困惑,直到我明白爲什麼。
提前感謝所有回答問題的人!
編輯: 我目前使用:
if(current_user->fs_id == sending_user->fs_id) {
snprintf(server->current_buffer, buffer_size, "You said: %s", message);
} else {
snprintf(server->current_buffer, buffer_size, "%s said: %s", sending_user->name, message);
}
if(send(current_user->fs_id, server->current_buffer, buffer_size, 0) == -1) {
perror("Sending data");
}
我明白這不是做的最好的方式,這就是我現在固定的一部分。
有趣。在你使用普通文件的類型之外,是否存在與此相關的「陷阱」?速度命中還是類似的?編輯:例如,發送要求我循環它,直到完整的內容發送,對吧?這是否適用於fprintf這種方式? – Codeacula 2010-09-07 02:24:59
假設它是阻塞模式下的流套接字,fprintf將負責所需的任何循環。唯一的「難題」是如果你使用Windows;在Windows上,套接字不是文件描述符,因爲它們位於每個其他操作系統上。 – mark4o 2010-09-07 02:50:11
謝謝,mark4o。作爲後續,比使用send/recv直接做得慢嗎?這是一個顯着的差異? – Codeacula 2010-09-07 02:58:54