На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > Socket
      Народ помогите розобратся с прогой клиент-сервер. Прикол такой создаю сокет прослушеваю все как положено но не могу получит даные с клиента. При запуске автоматически сервер выдает сообщение (ММММММММММММяяя). я пробывал выводить то что получу. Если не сложно киньте код клиент сервера за рание благодарен. :wall:
        Выложить пример это конечно проще простого, но нужно самому разобраться как и что работает!
        Приведи код как отправляешь как получаешь...
          Отсылаю
          ExpandedWrap disabled
            send(s,"drg",3,MSG_OOB)

          прием
          ExpandedWrap disabled
            recv(s,buf,sizeof(buf));
            AfxMessageBox(buf);
            А где 4-тый параметр для recv?
            попробуй юзать 0 вместо MSG_OOB, хотя врядли в этом дело...

            А коннект нормально устанавливается?
              Коннект нормально проблема в получении и отправке
                Опиши поподробнее!

                Ты свойтва сокетов правильно выставил?
                Такой код будет работать только для блокирующих.
                Тип сокета? Потоковый?

                Еще раз: 4-тый параметр для recv какой?
                А буфер для получения правильно выделил?

                Что из тебя все вытятивать нада? ( Партизан блин :) )
                  Цитата vovikdrg @ 20.07.04, 12:07
                  прием
                  ExpandedWrap disabled
                    recv(s,buf,sizeof(buf));
                    AfxMessageBox(buf);

                  Вообще-то, 3 параметр в recv это длина buf, а не колличество байт! ;)
                  Другими словами нужно так:
                  ExpandedWrap disabled
                     
                    int nRecv=recv(s,buf,strlen(buf), 0);
                    buf[nRecv]=0;
                    AfxMessageBox(buf);
                    Цитата

                    send(s,"drg",3,MSG_OOB);

                    Почему 3, а не 4. Где конец файла?
                      Сервер
                      [/CODE]int s;
                      s=socket(AF_INET,SOCK_STREAM,0);

                      sockaddr_in local_addr;
                      local_addr.sin_family=AF_INET;
                      local_addr.sin_port=PORT;// не забываем о сетевом порядке
                      local_addr.sin_addr.s_addr=0;// сервер принимает подключения на все IP-адреса
                      bind(s,(sockaddr *) &local_addr,sizeof(local_addr));
                      listen(s,100);

                      sockaddr_in client_addr;
                      int client_addr_size=sizeof(client_addr);
                      accept(s,(sockaddr*)&client_addr, &client_addr_size);
                      char buf[5];
                      int nRecv=recv(s,buf,strlen(buf), 1);
                      if (nRecv==1)
                      {
                      buf[nRecv]=0;
                      AfxMessageBox(buf);
                      }
                      shutdown(s,1);
                      ExpandedWrap disabled
                         
                        и Вот клиент
                      int s;
                      s=socket(AF_INET,SOCK_STREAM,0);

                      sockaddr_in server_addr;
                      server_addr.sin_family = AF_INET;
                      server_addr.sin_addr.s_addr = INADDR_ANY;
                      server_addr.sin_port = PORT;
                      //server_addr.sin_addr.S_un.S_addr = inet_addr("192.168.0.2");
                      connect (s, (sockaddr* )&server_addr, sizeof (server_addr));
                      char buf[5]="OK";
                      send (s,"ok",2,MSG_OOB);
                      shutdown(s,0);
                      ExpandedWrap disabled
                         
                        проблема в том что когда запускаю сервер выдаэт окно в котором (МММММ). в чем тут проблема
                         
                        [color=gray][size=1][b]Добавлено в <time class="tag-mergetime" datetime="2004-07-21T22:31:00+00:00">21.07.04, 22:31</time>[/b]:[/size][/color]
                        Сервер[CODE]
                        int s;
                            s=socket(AF_INET,SOCK_STREAM,0);
                                
                            sockaddr_in     server_addr;    
                            server_addr.sin_family      = AF_INET;
                            server_addr.sin_addr.s_addr = INADDR_ANY;
                            server_addr.sin_port        = PORT;
                            //server_addr.sin_addr.S_un.S_addr = inet_addr("192.168.0.2");
                            connect (s, (sockaddr* )&server_addr,  sizeof (server_addr));
                            char buf[5]="OK";
                            send (s,"ok",2,MSG_OOB);
                            shutdown(s,0);

                      Клиент
                      ExpandedWrap disabled
                         
                        int s;
                        s=socket(AF_INET,SOCK_STREAM,0);
                         
                        sockaddr_in server_addr;
                        server_addr.sin_family = AF_INET;
                        server_addr.sin_addr.s_addr = INADDR_ANY;
                        server_addr.sin_port = PORT;
                        //server_addr.sin_addr.S_un.S_addr = inet_addr("192.168.0.2");
                        connect (s, (sockaddr* )&server_addr, sizeof (server_addr));
                        char buf[5]="OK";
                        send (s,"ok",2,MSG_OOB);
                        shutdown(s,0);

                      Чтобы удобней было
                        Попробуй это вставить в начало и сервака и клиента.

                        WSADATA Wsa = {0};
                        if(WSAStartup(0x0101,&Wsa) != 0)
                        {
                        return 0;
                        }
                          Цитата vovikdrg @ 22.07.04, 01:27
                          Сервер
                          ExpandedWrap disabled
                            connect (s, (sockaddr* )&server_addr,  sizeof (server_addr));

                          А куда сервер коннектится ? Сервер должен слушать, для этого нужно вызывать bind и listen, а клиент уже потом коннектится к серверу на его(сервера) порт.
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0308 ]   [ 16 queries used ]   [ Generated: 12.12.24, 23:30 GMT ]