Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > C/C++: Сетевое программирование > Socket |
Автор: vovikdrg 20.07.04, 07:52 |
Народ помогите розобратся с прогой клиент-сервер. Прикол такой создаю сокет прослушеваю все как положено но не могу получит даные с клиента. При запуске автоматически сервер выдает сообщение (ММММММММММММяяя). я пробывал выводить то что получу. Если не сложно киньте код клиент сервера за рание благодарен. ![]() |
Автор: ViGOur 20.07.04, 08:01 |
Выложить пример это конечно проще простого, но нужно самому разобраться как и что работает! Приведи код как отправляешь как получаешь... |
Автор: vovikdrg 20.07.04, 08:07 |
Отсылаю <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> send(s,"drg",3,MSG_OOB) прием <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> recv(s,buf,sizeof(buf)); AfxMessageBox(buf); |
Автор: Gunnar 20.07.04, 08:20 |
А где 4-тый параметр для recv? попробуй юзать 0 вместо MSG_OOB, хотя врядли в этом дело... А коннект нормально устанавливается? |
Автор: vovikdrg 20.07.04, 08:23 |
Коннект нормально проблема в получении и отправке |
Автор: Gunnar 20.07.04, 08:28 |
Опиши поподробнее! Ты свойтва сокетов правильно выставил? Такой код будет работать только для блокирующих. Тип сокета? Потоковый? Еще раз: 4-тый параметр для recv какой? А буфер для получения правильно выделил? Что из тебя все вытятивать нада? ( Партизан блин ![]() |
Автор: ViGOur 20.07.04, 10:57 |
Цитата vovikdrg @ 20.07.04, 12:07 прием <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> recv(s,buf,sizeof(buf)); AfxMessageBox(buf); Вообще-то, 3 параметр в recv это длина buf, а не колличество байт! ![]() Другими словами нужно так: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> int nRecv=recv(s,buf,strlen(buf), 0); buf[nRecv]=0; AfxMessageBox(buf); |
Автор: Olega 20.07.04, 11:54 |
Цитата send(s,"drg",3,MSG_OOB); Почему 3, а не 4. Где конец файла? |
Автор: vovikdrg 21.07.04, 22:27 |
Сервер [/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); <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 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); <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> проблема в том что когда запускаю сервер выдаэт окно в котором (МММММ). в чем тут проблема [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); Клиент <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 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); Чтобы удобней было |
Автор: __SKV 21.07.04, 23:00 |
Попробуй это вставить в начало и сервака и клиента. WSADATA Wsa = {0}; if(WSAStartup(0x0101,&Wsa) != 0) { return 0; } |
Автор: Laco 21.07.04, 23:27 |
Цитата vovikdrg @ 22.07.04, 01:27 Сервер <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> connect (s, (sockaddr* )&server_addr, sizeof (server_addr)); А куда сервер коннектится ? Сервер должен слушать, для этого нужно вызывать bind и listen, а клиент уже потом коннектится к серверу на его(сервера) порт. |