这很可能是个新手问题,但我正在寻找一个printf
风格的函数,用于TCP套接字上的send
。这是一个简单的聊天服务器,特别是Beej套接字指南中的一个修改版本。我准备编写自己的函数,但在此之前,我想确保我不是在重新发明轮子。
我在寻找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");
}
我知道这不是最好的方法,这是我现在正在解决的问题的一部分。
3条答案
按热度按时间8wtpewkr1#
使用
fdopen
创建与套接字对应的FILE *
,然后使用fprintf
写入套接字。iyfjxgzm2#
我假设您会将
snprintf
(比sprintf
更安全)用于缓冲区,而send
...当然,你可以用一个很小的自耦变压器函数来封装它。
ejk8hzay3#
POSIX标准定义了:
dprintf()函数应等同于fprintf()函数,不同之处在于dprintf()应将输出写入与fildes参数指定的文件描述符关联的文件,而不是将输出置于流中。
返回值:
成功完成后,dprintf()函数应返回传输的字节数。