URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8703
[ Назад ]

Исходное сообщение
"Проблема с socket`ом (EPOLL, nonblocking)"

Отправлено ZioN , 20-Апр-10 18:26 
Есть сервер, писал его для flash сокетов, работает все нормально, но через некоторое время происходит что-то (мне) непонятное...

Соединение с сервером происходит, получение данных по сокету происходит (судя по strace`у) да и ответ видимо есть, т.к. есть это в strace, но до сокета клиента, от сервера данные не доходят... Не могу понят в чем дело, потом при новом подключении в recv по strace`у приходят предыдущие данные, хотя я ничего в сокет не отправлял, а данные там взялись откуда-то. Небольшой кусок лога:

epoll_wait(5, {{EPOLLIN, {u32=3, u64=3}}}, 150, -1) = 1
accept(3, {sa_family=AF_INET, sin_port=htons(62189), sin_addr=inet_addr("178.95.188.112")}, [16]) = 7
fcntl64(7, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(7, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
epoll_ctl(5, EPOLL_CTL_ADD, 7, {EPOLLIN|EPOLLET, {u32=7, u64=7}}) = 0
epoll_wait(5, {{EPOLLIN, {u32=7, u64=7}}}, 150, -1) = 1
recv(7, "<policy-file-request/>\0", 2500, 0) = 23
send(7, "<?xml version=\"1.0\" encoding=\"UT"..., 350, 0) = 350
epoll_ctl(5, EPOLL_CTL_MOD, 7, {EPOLLOUT|EPOLLET, {u32=7, u64=7}}) = 0
epoll_wait(5, {{EPOLLOUT, {u32=7, u64=7}}}, 150, -1) = 1
epoll_ctl(5, EPOLL_CTL_DEL, 7, {EPOLLOUT|EPOLLET, {u32=7, u64=7}}) = 0
close(7)                                = 0
epoll_wait(5,

А вот здесь просто соединяясь к серверу, ничего ему не отправлял:

epoll_wait(5, {{EPOLLIN, {u32=3, u64=3}}}, 150, -1) = 1
accept(3, {sa_family=AF_INET, sin_port=htons(62229), sin_addr=inet_addr("178.95.188.112")}, [16]) = 7
fcntl64(7, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(7, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
epoll_ctl(5, EPOLL_CTL_ADD, 7, {EPOLLIN|EPOLLET, {u32=7, u64=7}}) = 0
epoll_wait(5, {{EPOLLIN, {u32=7, u64=7}}}, 150, -1) = 1
recv(7, "<policy-file-request/>\0", 2500, 0) = 23
send(7, "<?xml version=\"1.0\" encoding=\"UT"..., 350, 0) = 350
epoll_ctl(5, EPOLL_CTL_MOD, 7, {EPOLLOUT|EPOLLET, {u32=7, u64=7}}) = 0
epoll_wait(5, {{EPOLLOUT, {u32=7, u64=7}}}, 150, -1) = 1
epoll_ctl(5, EPOLL_CTL_DEL, 7, {EPOLLOUT|EPOLLET, {u32=7, u64=7}}) = 0
close(7)                                = 0

Еще смущает EPOLLET при нормальной работе, обычно его нет в strace, помогите пожалуйста если знаете в чем проблема


Содержание

Сообщения в этом обсуждении
"Проблема с socket`ом (EPOLL, nonblocking)"
Отправлено Zyxel , 23-Апр-10 16:23 
интересно было б на код взглянуть, а не на лог



"Проблема с socket`ом (EPOLL, nonblocking)"
Отправлено pavlinux , 30-Авг-10 02:51 
>пожалуйста если знаете в чем проблема

происходит что-то,...
с сервером происходит, ...
по сокету происходит ...
да и видимо есть, т.к. есть ...
но до от сервера данные не доходят...
по strace`у приходят ....
взялись откуда-то....

Чё?

> Еще смущает EPOLLET при нормальной работе, обычно его нет в strace,
> помогите пожалуйста если знаете в чем проблема

Сервачок поди на пидоне или Qt?