很可能是一个菜鸟问题,但我正在寻找一个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