Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > socket


Автор: Гость_Intro 10.10.2004, 16:15
'DEFAULT_PROTOCOL' : undeclared identifier --- ошибка...

в функции :
void %%%%%%()
{
SocketGetHostName();
SOCKET servsocket;
servsocket = socket(PF_INET,SOCK_STREAM,DEFAULT_PROTOCOL);
if (servsocket==INVALID_SOCKET)
{
printf("%%%%%%%%\n");
exit(1);
}
closesocket(servsocket);
}


Автор: Гость_Intro 10.10.2004, 16:16
Чем это вызванно и как разрешить проблемму...

Автор: Гость_Intro 10.10.2004, 16:47
????????????????????????

Автор: mr.DUDA 10.10.2004, 17:44
Константа DEFAULT_PROTOCOL не определена ни в одном заголовочном файле VC++. Откуда взят исходник ?

Автор: Гость_Intro 10.10.2004, 18:03
http://www.firststeps.ru ---> visual c++ ---> network ---> winsock ---> 4 этап...

Автор: Гость_Intro 10.10.2004, 18:08
Правильно? :
socket(PF_INET,SOCK_STREAM,DEFAULT_PROTOCOL);
Или нет???
При компилинге ошибка и всё, пробывал банально в поиске смотреть где такая константа определенна, но кроме уже использующегося winsock.h or winsock2.h а так же в необходимой библоитеке...
Ну блин у всех работает, а у меня нет --- полтергейст...

Автор: Гость_Intro 10.10.2004, 18:09
Я ведь дальше продвинуться не могу в изучении сокетов, а очень хочется...

Автор: Гость_Intro 10.10.2004, 18:46
А надо прописывать winsocket, если на самом деле надо получить просто socket server ??? вот так :

Вообще как рационализировать данный код ???


#include "stdafx.h"
#include "winsock.h"
#include "iostream.h"
#include "MSWSOCK.H"
#define PORT_ADDR 80

void CreateSocket();
void CloseSocket();
void SocketGetHostName();

SOCKET servsocket;

void main()
{
CreateSocket();
struct in_addr
{
union
{
struct
{
unsigned char
s_b1,
s_b2,
s_b3,
s_b4;
}
S_un_b;
struct
{
unsigned short
s_w1,
s_w2;
} S_un_w;
unsigned long S_addr;
}
S_un;
};

struct sockaddr_in
{
short sin_family;
unsigned short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};


SOCKADDR_IN socketaddr;
socketaddr.sin_family = AF_INET;
socketaddr.sin_addr.s_addr = INADDR_ANY;
socketaddr.sin_port = PORT_ADDR;

if (bind(servsocket,(LPSOCKADDR)&socketaddr,sizeof(socketaddr)) == SOCKET_ERROR)
{
cout << "Error bind socket\n";
exit(1);
}
else cout << "God bind socket !!!!!!\n";





}

void CreateSocket()
{
SocketGetHostName();
servsocket = socket(PF_INET,SOCK_STREAM,DEFAULT_PROTOCOL);

}

void CloseSocket()
{
if (servsocket==INVALID_SOCKET)
{
cout << "Error create socket\n";
exit(1);
}
closesocket(servsocket);
}

void SocketGetHostName()
{
char chInfo[64];

if (gethostname(chInfo,sizeof(chInfo)))
{
cout << "Not local host\n";
exit(1);
}
else
{
cout << chInfo;
cout << " GetHostName OK !!!!!\n";
}
}

Автор: Гость_Intro 10.10.2004, 18:57
Вообще, а где взять подробную доку по сокетам
Msdn не предлагать biggrin.gif

Автор: mr.DUDA 10.10.2004, 19:39
Цитата
Вообще, а где взять подробную доку по сокетам
Msdn не предлагать

MSDN biggrin.gif

З.Ы. Модератор: просьба не подымать тему с пом. флуда (даже если и по существу). Если кто-то знает ответ на вопрос, то обязательно помогут - пусть и не сейчас, но через некоторое время (форум и чат - не одно и то же smile.gif).

Автор: Гость_Intro 11.10.2004, 04:31
MSDN biggrin.gif hmmm.gif
форум и чат - не одно и то же --- понял учту....

Автор: Intro 17.10.2004, 05:25
Всё выход нашёл сам.... + вынес все структуры в отдельный заг. файл. А самое главное DEFAULT --- это я, как понял надо было заменить на 0, то есть на DEFAULT :cool


mr.DUDA, будь по-проще... ;-)

Автор: MorphX 22.1.2013, 14:40
Столкнулся с тем же. В Winsock.h прогнал поиском и нашел список протоколов. И для того самого вышеупомянутого значения 0 есть константа: #define IPPROTO_IP              0               /* dummy for IP */

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)