[SOCKET] es kommen nur 5 buchstaben an
-
moin
ich habe hier 2 programme die lokal auf einem rechner miteinander kommunizieren muessen. das mach ich einfach ueber sockets; doch leider kommen immer nur 5 zeichen an, dann wars das (keinerlei fehler)
also die beiden programme laufen beide auf dem selben rechner, und senden bei an 127.0.0.1 und an denselben port.
printf("I SEND %s\n", input); /*if((ret=send(sockfd, input, strlen(input), 0)) < 0) { perror("Error in handle_execute: error by sending"); return 1; }*/ write(sockfd, input, 20); close(sockfd); return 0; }
das ist der codeabschnitt aus dem sendenden process: die printf anweisung vorher, die das, was gesendet werden soll, nochmal auf stdout ausgibt, zeigt einwandfrei den inhalt von input an; das soll gesendet werden (ich habs mit send/recv und write/read probiert, beides das gleiche)
so sieht der teil des lesenden processes aus
listenfd = socket(AF_INET, SOCK_STREAM, 0); bzero(&conn_addr,sizeof(conn_addr)); conn_addr.sin_family = AF_INET; conn_addr.sin_port = htons(PORT_SYS_CMD_TO_SMB_EXE); inet_pton(AF_INET, LOCAL_IP, &conn_addr.sin_addr); if((ret=bind(listenfd, (struct sockaddr *) &conn_addr, sizeof(conn_addr)))!=0) { perror("Error in system_command: bind error"); return 1; } listen(listenfd, 1); if((ret=fork())==0) { strncpy(build_command, command, MAX_COMMAND_LEN); strcat(build_command, EXECUTE_CALL); system(build_command); exit(0); } sockfd = accept(listenfd, NULL, NULL); //recv(sockfd, command_output, sizeof(command_output), 0); read(sockfd, command_output, sizeof(command_output)); printf("RECV: %s\n", command_output);
der aufruf
system(build_command);
ruft uebrigens den sendenden process von oben auf, der das halt sendet; und der hier empfaengt das. eigentlich ganz ordinaerer socket stuff, doch ich kriege immer nur die ersten 5 buchstaben, also
printf("RECV: %s\n", command_output);
gibt immer nur die ersten 5 zeichen des strings aus, der urspruenglich geschickt wurde und vom sendenden process korrekt ausgegeben wurde bei:
printf("I SEND %s\n", input);
ich bin voellig ratlos und hab keine idee, ihr?
danke :>
-
problem is fixed, thx anyway
sizeof(command_output) was the problem cuz its only returns 4