The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"segmentation fault на сокете"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"segmentation fault на сокете"
Сообщение от bison Искать по авторуВ закладки on 09-Июн-04, 12:25  (MSK)
есть две проги - клиент и сервер.клиент посылает серверу сообщение,а сервер его принимает и отображает на экране.
Если посылать всего одно сообщение ,то все нормально.Но вот если организовать цикл отправки и приема сообщений,то клиент после первого сообщения пишет об ошибке 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);

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "segmentation fault на сокете"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 09-Июн-04, 16:36  (MSK)
>есть две проги - клиент и сервер.клиент посылает серверу сообщение,а сервер его
>принимает и отображает на экране.
>Если посылать всего одно сообщение ,то все нормально.Но вот если организовать цикл
>отправки и приема сообщений,то клиент после первого сообщения пишет об ошибке
>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.. и т.п.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "segmentation fault на сокете"
Сообщение от putty Искать по авторуВ закладки on 09-Июн-04, 17:25  (MSK)

>scanf .... strcmp ....... ;)
>
посоветуйте плз что использовать.....
>P.S.: лучше используй вещи типа shutdown(sock, SHUT_RDWR).. вместо 0.. и т.п.
все с ошибками разобрался,теперь клиент - сервер обмениваются сообщениями  без ошибок.Одно но - после send() вылезает Illegal seek,это не еррор,типа warning,но что это конкретно?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "segmentation fault на сокете"
Сообщение от Vladislav Lazarenko Искать по авторуВ закладки on 09-Июн-04, 17:28  (MSK)
>
>>scanf .... strcmp ....... ;)
>>
>посоветуйте плз что использовать.....
>>P.S.: лучше используй вещи типа shutdown(sock, SHUT_RDWR).. вместо 0.. и т.п.
>все с ошибками разобрался,теперь клиент - сервер обмениваются сообщениями  без ошибок.Одно
>но - после send() вылезает Illegal seek,это не еррор,типа warning,но что
>это конкретно?


Не знаю, что и где там вылазиет, очень редко доводится на таком уровне программировать, но вместо scanf вообще выбрось в мусор, а вместо strcmp юзай strncmp etc.

А лучше std::string, CORBA и так далее :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру