[C] Server mit socket - Ausgabe auf Serverconsole

Servus
Ich hab ein kleines Problemchen mit meinem C Prgramm, welches mit Sockets einen "Server" darstellt. Das Problem ist, dass wenn ein neuer Client connected eigentlich mit printf etwas auf der Server Konsole ausgegeben werden sollte, was aber nicht der Fall ist. Beim clienten funktioniert alles soweit (getestet mit telnet localhost 8000).

Code:
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int clientWelcome(int client) {
	char buffer[255];

	sprintf(buffer, "Servus!\r\n");

	int bytes = send(client, buffer, strlen(buffer), 0);

	if (bytes == -1) {
		return -1;
	} else {
		return 0;
	}

}

int main(int argc, char **argv) {
	
	printf("Starting server...");

	int sock = socket(AF_INET, SOCK_STREAM, 0);

	struct sockaddr_in addr;
	addr.sin_addr.s_addr = INADDR_ANY;
	addr.sin_port = htons(8000);
	addr.sin_family = AF_INET;

	int ru = 1;
	setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&ru,sizeof(ru));

	if (bind(sock, &addr, sizeof(addr)) == -1) {
		perror("ERROR at bind()");
		return 1;
	}

	if (listen(sock, 5) == -1) {
		perror("ERROR at listen()");
		return 1;
	}

	for (;;) {
		int csock;
		int c_size;
		struct sockaddr_in caddr;
		
		c_size = sizeof(caddr);
		csock = accept(sock, &caddr, &c_size);

		if (csock == -1) {
			perror("ERROR at accept()");
			return 1;
		}

		printf("new client from %s", inet_ntoa(caddr.sin_addr));

		if(clientWelcome(csock) == -1){
			perror("ERROR at welcome()");
			return 1;
		}

		close(csock);
	}
	
	close(sock);
	printf("Server is shutting down");

	return 0;
}

EDIT:
Hab das Problem gefunden: Die Strings sind nicht ausgegeben worden, weil nirgends ein \n war. Darum hätte man jedesmal fflush(stdout) benutzen müssen
 
Zurück
Oben