Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.86] |
|
Сообщ.
#1
,
|
|
|
Народ помогите розобратся с прогой клиент-сервер. Прикол такой создаю сокет прослушеваю все как положено но не могу получит даные с клиента. При запуске автоматически сервер выдает сообщение (ММММММММММММяяя). я пробывал выводить то что получу. Если не сложно киньте код клиент сервера за рание благодарен.
|
Сообщ.
#2
,
|
|
|
Выложить пример это конечно проще простого, но нужно самому разобраться как и что работает!
Приведи код как отправляешь как получаешь... |
Сообщ.
#3
,
|
|
|
Отсылаю
send(s,"drg",3,MSG_OOB) прием recv(s,buf,sizeof(buf)); AfxMessageBox(buf); |
Сообщ.
#4
,
|
|
|
А где 4-тый параметр для recv?
попробуй юзать 0 вместо MSG_OOB, хотя врядли в этом дело... А коннект нормально устанавливается? |
Сообщ.
#5
,
|
|
|
Коннект нормально проблема в получении и отправке
|
Сообщ.
#6
,
|
|
|
Опиши поподробнее!
Ты свойтва сокетов правильно выставил? Такой код будет работать только для блокирующих. Тип сокета? Потоковый? Еще раз: 4-тый параметр для recv какой? А буфер для получения правильно выделил? Что из тебя все вытятивать нада? ( Партизан блин ) |
Сообщ.
#7
,
|
|
|
Цитата vovikdrg @ 20.07.04, 12:07 прием recv(s,buf,sizeof(buf)); AfxMessageBox(buf); Вообще-то, 3 параметр в recv это длина buf, а не колличество байт! Другими словами нужно так: int nRecv=recv(s,buf,strlen(buf), 0); buf[nRecv]=0; AfxMessageBox(buf); |
Сообщ.
#8
,
|
|
|
Цитата send(s,"drg",3,MSG_OOB); Почему 3, а не 4. Где конец файла? |
Сообщ.
#9
,
|
|
|
Сервер
[/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); и Вот клиент 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); проблема в том что когда запускаю сервер выдаэт окно в котором (МММММ). в чем тут проблема [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); Клиент 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); Чтобы удобней было |
Сообщ.
#10
,
|
|
|
Попробуй это вставить в начало и сервака и клиента.
WSADATA Wsa = {0}; if(WSAStartup(0x0101,&Wsa) != 0) { return 0; } |
Сообщ.
#11
,
|
|
|
Цитата vovikdrg @ 22.07.04, 01:27 Сервер connect (s, (sockaddr* )&server_addr, sizeof (server_addr)); А куда сервер коннектится ? Сервер должен слушать, для этого нужно вызывать bind и listen, а клиент уже потом коннектится к серверу на его(сервера) порт. |