Plus que probablement une question novice, mais je suis à la recherche d'une printf
-sque fonction à utiliser dans send
sur les sockets TCP. Ceci est pour un simple serveur de discussion, en particulier une version modifiée de celle du guide de socket de Beej. Je suis prêt à écrire le mien, mais avant je veux m'assurer que je ne réinvente pas la roue.Y a-t-il un fprintf pour envoyer?
Je cherche quelque chose d'indigène à C, pas une bibliothèque ou quelque chose. Je fais cela en tant que poursuite intellectuelle, et l'utilisation d'une bibliothèque prête à l'emploi ne va pas m'apprendre aussi bien que de me tromper jusqu'à ce que je comprenne bien pourquoi.
Appréciation à l'avance pour ceux qui répondent!
Edit: Je suis actuellement en utilisant:
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");
}
Je comprends que ce n'est pas la meilleure façon de le faire, cela fait partie de ce que je suis maintenant la fixation.
Intéressant. Y a-t-il des "gotchas" associés à cela en dehors des types que vous pourriez trouver en travaillant avec des fichiers normaux? Coups de vitesse ou similaires? Edit: Par exemple, envoyer nécessite que je boucle avec jusqu'à ce que le contenu complet est envoyé, non? Est-ce que cela s'applique avec fprintf de cette manière? – Codeacula
En supposant qu'il s'agit d'une socket de flux en mode bloquant, fprintf prendra en charge toute boucle nécessaire. Le seul "gotcha" est si vous utilisez Windows; Sous Windows, les sockets ne sont pas des descripteurs de fichiers comme sur tous les autres systèmes d'exploitation. – mark4o
Merci, mark4o. Et en tant que suivi, est-ce que c'est plus lent que d'utiliser send/recv directement? Est-ce une différence notable? – Codeacula