Я столкнулся со странной проблемой, которую что-то не может объяснить;)
Сейчас я занимаюсь разработкой клиентской программы, работающей на телефоне Android.это приложение подключается к удаленному серверу и что-то делает.
базовая библиотека, созданная в C ++ (NDK) и Android UI, работает нормально при использовании режима WIFI, но система зависает при режиме данных 3G.
я получил, гдеэто замораживание вызывает, это было в функции connect ().
странно, сокет уже установлен в режим NON-BLOCK перед строкой connect ().
m_nSock = socket(AF_INET, SOCK_STREAM, 0);
if (m_nSock <= 0)
{
close(m_nSock);
return -1;
}
flags = fcntl(m_nSock, F_GETFL, 0);
fcntl(m_nSock, F_SETFL, flags | O_NONBLOCK);
struct sockaddr_in AddrClient;
memset(&AddrClient, 0x00, sizeof(AddrClient));
AddrClient.sin_family = AF_INET;
AddrClient.sin_addr.s_addr = inet_addr(szIP);
AddrClient.sin_port = htons(nPort);
nRet = connect(m_nSock, (struct sockaddr*)&AddrClient, sizeof(AddrClient));
блокировка всегда занимает около 21секунд.(это может показать, что время ядра по умолчанию используется где-то в ядре, я думаю.) Как я могу это исправить?что я должен искать?
любые предложения приветствуются.
заранее спасибо.