Не могу понять
От: Evilguc  
Дата: 15.01.08 18:24
Оценка:
Привет всем!

У мя проблема! Пишу сервер на API C++ .
При попытке подключения к серверу в telnet виснет на (подключение...) .
много гуглил и читал книги... но ничего не выходит
  WSADATA wsaData;
    WSAStartup(MAKEWORD(2, 0), &wsaData);
    SOCKET    sock, sock_Client;
    struct sockaddr_in addr, addr_Client;
    sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(5050);
    bind(sock, (struct sockaddr *)&addr, sizeof(addr));
    listen(sock, 1);
    while(1) {
        sock_Client = accept(sock, (struct sockaddr *)&addr_Client, 0);
        ...
    }



ПОМОГИТЕ КТО МОЖЕТ!!!
Зарание спасибо!!!

16.01.08 06:10: Перенесено модератором из 'C/C++' — Odi$$ey
Re: Не могу понять
От: AlexCrush Россия  
Дата: 15.01.08 18:43
Оценка:
Может стоит добавить проверку результатот выполнения bind и listen с печатью кодов ошибок? Станет ясно где собака порылась.
Re: Не могу понять
От: Socket Ниоткуда http://www.samborsky.com
Дата: 15.01.08 18:52
Оценка:
Здравствуйте, Evilguc, Вы писали:

accept(sock, 0, 0);

попробуй
http://www.samborsky.com — мой блог
Re[2]: Не могу понять
От: Evilguc  
Дата: 15.01.08 19:34
Оценка:
Здравствуйте, Socket, Вы писали:

S>accept(sock, 0, 0);


S>попробуй


И твой способ и способ AlexCrush'а мне не помогают
проверки ошибок не выдают, а

accept(sock, 0, 0);


новой песни не играют.

Но и на этом спасибо!!!

P.S: Вот бы кто у себя попробывал этот код(или с изменениями) и отписался здесь... я был бы очень признателен
Может это только у меня не работает???
Re[3]: Не могу понять
От: Socket Ниоткуда http://www.samborsky.com
Дата: 15.01.08 19:44
Оценка:
Здравствуйте, Evilguc, Вы писали:


    WSADATA w;
    WSAStartup(0x202,&w);

    
    SOCKET sock;
    struct sockaddr_in addr;
    if( INVALID_SOCKET != (sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP)) ){

        addr.sin_addr.s_addr = htonl(INADDR_ANY);
        addr.sin_family = AF_INET;
        addr.sin_port = htons(5050);

        if( SOCKET_ERROR != bind(sock,(struct sockaddr *)&addr,sizeof(addr)) ){

            if( SOCKET_ERROR != listen(sock,0) ){

                for(;;){
                    SOCKET s = accept(sock,0,0);

                    char c;

                    while( recv(s,&c,1,0) ){
                        send(s,&c,1,0);
                    }
                    
                }
            }
        }        
    }


проверил — у меня работает с телнетом, получился вот такой вот простенький эхо сервер
http://www.samborsky.com — мой блог
Re[4]: Не могу понять
От: Michael Chelnokov Украина  
Дата: 16.01.08 13:49
Оценка:
Здравствуйте, Socket, Вы писали:

S>проверил — у меня работает с телнетом, получился вот такой вот простенький эхо сервер


Еще нулями надо бы addr забить перед использованием.

Почему не работает у Evilguc —
Может файрволл какой-нить, может еще что.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.