Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |
[C++] Написал сервер на C++... Но вот косячокс небольшой вышелс.. 18.02.02 12:17 Число просмотров: 1088
Автор: Cyril <sc> Статус: Member
|
> написал сервер: > #include <stdio.h> > #include <winsock.h> > #define WINSOCK_VERSION 0x0101 > void main() > { > WSADATA wsaData; > struct sockaddr add; > struct sockaddr_in addr; > int add_len; > add_len = sizeof(sockaddr); > int acc; > int sock; > char buf[1024]; > (WSAStartup(WINSOCK_VERSION, &wsaData)); > { > sock = socket(PF_INET, SOCK_STREAM, 0); > addr.sin_family = AF_INET; > addr.sin_port = htons(4000); > addr.sin_addr.s_addr = INADDR_ANY; > bind(sock,( struct sockaddr *) &addr, sizeof(sockaddr_in)); > listen(sock,10); > acc = accept(sock,(struct sockaddr *) &add, &add_len); > { > do > { > recv(acc,buf,sizeof(buf),0); > > if (strncmp("say",buf,4) !=0) > printf("RABOTAET!"); > } > while( strncmp("bye\r", buf,4) !=0); > } > > }} > Псоле отсылания "bye" Почему то пишется еще раз "Rabotaet!" судя по твоему коду так и должно быть
ты посылаешь bye
> if (strncmp("say",buf,4) !=0) естественно say <> bay поэтому печатается строка
printf("RABOTAET!");
P.S. Вообще существует такая замечательная вещь как отладчик.
> Как избавиться!? я надеюсь, что ты догадаешься ;-)
|
|
<programming>
|
[C++] Написла сервер на C++... Но вот косячокс небольшой вышелс.. 17.02.02 11:49
Автор: BigEye Статус: Незарегистрированный пользователь
|
написал сервер:
#include <stdio.h>
#include <winsock.h>
#define WINSOCK_VERSION 0x0101
void main()
{
WSADATA wsaData;
struct sockaddr add;
struct sockaddr_in addr;
int add_len;
add_len = sizeof(sockaddr);
int acc;
int sock;
char buf[1024];
(WSAStartup(WINSOCK_VERSION, &wsaData));
{
sock = socket(PF_INET, SOCK_STREAM, 0);
addr.sin_family = AF_INET;
addr.sin_port = htons(4000);
addr.sin_addr.s_addr = INADDR_ANY;
bind(sock,( struct sockaddr *) &addr, sizeof(sockaddr_in));
listen(sock,10);
acc = accept(sock,(struct sockaddr *) &add, &add_len);
{
do
{
recv(acc,buf,sizeof(buf),0);
if (strncmp("say",buf,4) !=0)
printf("RABOTAET!");
}
while( strncmp("bye\r", buf,4) !=0);
}
}}
Псоле отсылания "bye" Почему то пишется еще раз "Rabotaet!" Как избавиться!?
|
 |
[C++] Написал сервер на C++... Но вот косячокс небольшой вышелс.. 18.02.02 12:17
Автор: Cyril <sc> Статус: Member
|
> написал сервер: > #include <stdio.h> > #include <winsock.h> > #define WINSOCK_VERSION 0x0101 > void main() > { > WSADATA wsaData; > struct sockaddr add; > struct sockaddr_in addr; > int add_len; > add_len = sizeof(sockaddr); > int acc; > int sock; > char buf[1024]; > (WSAStartup(WINSOCK_VERSION, &wsaData)); > { > sock = socket(PF_INET, SOCK_STREAM, 0); > addr.sin_family = AF_INET; > addr.sin_port = htons(4000); > addr.sin_addr.s_addr = INADDR_ANY; > bind(sock,( struct sockaddr *) &addr, sizeof(sockaddr_in)); > listen(sock,10); > acc = accept(sock,(struct sockaddr *) &add, &add_len); > { > do > { > recv(acc,buf,sizeof(buf),0); > > if (strncmp("say",buf,4) !=0) > printf("RABOTAET!"); > } > while( strncmp("bye\r", buf,4) !=0); > } > > }} > Псоле отсылания "bye" Почему то пишется еще раз "Rabotaet!" судя по твоему коду так и должно быть
ты посылаешь bye
> if (strncmp("say",buf,4) !=0) естественно say <> bay поэтому печатается строка
printf("RABOTAET!");
P.S. Вообще существует такая замечательная вещь как отладчик.
> Как избавиться!? я надеюсь, что ты догадаешься ;-)
|
 |
[C++] Написла сервер на C++... Но вот косячокс небольшой вышелс.. 17.02.02 12:41
Автор: ih8u <i hate you> Статус: Member
|
> sock = socket(PF_INET, SOCK_STREAM, 0);
Ваще то AF_INET надо юзать
А что касаеца косячка, то видимо ты чтото не правильно делаешь в лупе "do"
Принимать данные надо пока сокет != SOCKET_ERROR
|
|
|