есть две проги - клиент и сервер.клиент посылает серверу сообщение,а сервер его принимает и отображает на экране.
Если посылать всего одно сообщение ,то все нормально.Но вот если организовать цикл отправки и приема сообщений,то клиент после первого сообщения пишет об ошибке Segmentation fault,а сервер не откликается.
это сервер:
s_new = accept (s, &from_sin, &from_len);
perror("Accept");
while(1) {
from_len = read (s_new, buf, BUF_SIZE);
write (1, buf, from_len);
if(strcmp(buf,"kill")==0) {
printf("\nExiting\n");
exit(0);
}
}
shutdown (s_new, 0);
close (s_new);}
Клиент:
while(1) {
scanf("%s",&input);
send (s, input, sizeof(input), 0);if(strcmp(s,"kill")==0) {
printf("Exiting...\n");
exit(0);
}
}
perror("SEND()");
close (s);
>есть две проги - клиент и сервер.клиент посылает серверу сообщение,а сервер его
>принимает и отображает на экране.
>Если посылать всего одно сообщение ,то все нормально.Но вот если организовать цикл
>отправки и приема сообщений,то клиент после первого сообщения пишет об ошибке
>Segmentation fault,а сервер не откликается.
>это сервер:
>s_new = accept (s, &from_sin, &from_len);
> perror("Accept");
> while(1) {
>
> from_len = read (s_new, buf, BUF_SIZE);
> write (1, buf, from_len);
> if(strcmp(buf,"kill")==0) {
> printf("\nExiting\n");
> exit(0);
> }
> }
> shutdown (s_new, 0);
> close (s_new);
>
> }
>Клиент:
>while(1) {
> scanf("%s",&input);
>
> send (s, input, sizeof(input), 0);
>
>if(strcmp(s,"kill")==0) {
> printf("Exiting...\n");
>exit(0);
>}
>}
>perror("SEND()");
> close (s);scanf .... strcmp ....... ;)
P.S.: лучше используй вещи типа shutdown(sock, SHUT_RDWR).. вместо 0.. и т.п.
>scanf .... strcmp ....... ;)
>
посоветуйте плз что использовать.....
>P.S.: лучше используй вещи типа shutdown(sock, SHUT_RDWR).. вместо 0.. и т.п.
все с ошибками разобрался,теперь клиент - сервер обмениваются сообщениями без ошибок.Одно но - после send() вылезает Illegal seek,это не еррор,типа warning,но что это конкретно?
>
>>scanf .... strcmp ....... ;)
>>
>посоветуйте плз что использовать.....
>>P.S.: лучше используй вещи типа shutdown(sock, SHUT_RDWR).. вместо 0.. и т.п.
>все с ошибками разобрался,теперь клиент - сервер обмениваются сообщениями без ошибок.Одно
>но - после send() вылезает Illegal seek,это не еррор,типа warning,но что
>это конкретно?
Не знаю, что и где там вылазиет, очень редко доводится на таком уровне программировать, но вместо scanf вообще выбрось в мусор, а вместо strcmp юзай strncmp etc.А лучше std::string, CORBA и так далее :)