Войти
ПрограммированиеФорумСеть

Полное руководство по сетевому программированию для разработчиков игр. Часть 4. TCP (Комментарии к статье)

Страницы: 1 2 3 Следующая »
#0
15:56, 8 ноя. 2003

Комментарий к Статье Полное руководство по сетевому программированию для разработчиков игр. Часть 4. TCP
Четвертая часть руководства рассказывает о передаче данных по протоколу TCP. Рассматриваются взаимодействия сервера и клиента с примерами исходного кода.


#1
15:56, 8 ноя. 2003

как всегда полезно и интересно..

#2
3:11, 9 ноя. 2003

see gametutorials.com->networking

#3
15:36, 22 дек. 2003

HL2 leaked alpha

#4
23:02, 22 дек. 2003

Neonic
?

#5
11:24, 23 дек. 2003

Либо там придумывать уже нечего, либо ещё что...да только я взял код, немного его модернизировал, а чуть позже ко мне попала HL2 leaked alpha. Исходники, ессно. Что интересно, названия, основные типы и ещё во многих местах в коде обнаружились совпадения. Стал смотреть - откуда, вспомнил про статью, с которой всё началось. Не спорю, в альфе код весьма хорош...

#6
20:13, 23 дек. 2003

Neonic
Cool :), фишка в том, что к четвертой части нету кода...
Хотя на момент, когда я прислал wat'у статьи, исходники hl2 еще не были сперты... Однако такое совпадение мне льстит ;)
P.S. (А вдруг valve заюзала код с этого сайта? гыгы :))

#7
20:31, 23 дек. 2003

x84
да точно! гады

#8
0:40, 24 дек. 2003

x84
так ты с Вальва можешь стребовать за то, что твой проприетарный код украли вместе с остальными сорцами.

#9
12:13, 24 дек. 2003

x84
На самом деле всё проще... как мне думается. Вальв тесно сотрудничает с мелкомягкими... MSDN содержит точно такие же названия, просто Вальв оптимизировали работу сетевого кода под свои нужды, не меняя названий... Ты ж вроде тоже не методом тыка учился? Наверняка по MSDN либо книжице-аналогу

#10
12:15, 24 дек. 2003

Neonic
Это была шутка юмора :))
А если серьезно, то в принципе неудивительно, что метод отсылки называется send, приема - recv, подключения - connect, и т.п. ;) Просто дословный перевод слов, которые первыми приходят на ум.

Прошло более 11 месяцев
#11
21:46, 23 ноя. 2004

Даешь продолжение! -)

#12
20:35, 12 мар. 2005

Может кто подскажет как решить проблему?
Я создаю сокет:
if((sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)) == INVALID_SOCKET)
{
cout<<"Socket is invalid"<<endl;
getch();
return;
}
unsigned short port = 110;
hostent *host;
host = gethostbyname("tut.by");
socketaddr.sin_family = PF_INET;// èëè AF_INET
socketaddr.sin_addr.s_addr = (u_char)host->h_addr;
socketaddr.sin_port = htons(port);
коннекчусь:

int size = sizeof(sockaddr_in);
sock = connect(sock,(struct sockaddr*)&socketaddr,size);

if (sock != SOCKET_ERROR )
      cout <<"Connection is successful"<<endl;
else
{
cout<<"Error in sock_connect()"<<endl;
ErrorInfo();
closesocket(sock);
}
все проходит удачно, сокет коннектицца
потом я пытаюсь послать что-нибудь:

int result=send(sock,"HELO USER",sizeof("HELO USER"),0);
if( result==SOCKET_ERROR )
{
cout<<"Error"<<endl;
ErrorInfo();
closesocket(sock);

return ;
}
вобщем WSAGetLastError() возвращает мне ошибку - дескриптор не я является дескриптором сокета.
ПОдскажите как рещить проблему.

#13
5:15, 13 мар. 2005

Polupoker
>Может кто подскажет как решить проблему?

Исправлю твой код:

коннекчусь:
int size = sizeof(sockaddr_in);
if (connect(sock,(struct sockaddr*)&socketaddr,size) != SOCKET_ERROR )
    cout <<"Connection is successful"<<endl;
else
{
    cout<<"Error in sock_connect()"<<endl;
    ErrorInfo();
    closesocket(sock);
}

Ошибка была тут:
  sock = connect(sock,(struct sockaddr*)&socketaddr,size);

  if (sock != SOCKET_ERROR )
          cout <<"Connection is successful"<<endl;

Ты присваиваешь переменной, в которой хранится дескриптор сокета, значение, возвращенное из connect, что равносильно тому, что ты просто потерял свой дескриптор... Ты присвоил переменной sock то, что вернула функция connect, и потом пытаешься использовать это значение, как дескриптор... Но функция connect не возвращает дескрипторов сокетов, она возвращает лишь число, которое сигнализирует о том, успешно ли эта функция выполнилась... И connect вполне аргументированно говорит, что это число - "invalid socket descriptor"...

#14
13:17, 13 мар. 2005

Да, эт я грамотно профтыкал. Большое спасибо.

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумСеть

Тема в архиве.