Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 не предлагать ![]() |
Автор: mr.DUDA 10.10.2004, 19:39 | ||
MSDN ![]() З.Ы. Модератор: просьба не подымать тему с пом. флуда (даже если и по существу). Если кто-то знает ответ на вопрос, то обязательно помогут - пусть и не сейчас, но через некоторое время (форум и чат - не одно и то же ![]() |
Автор: Гость_Intro 11.10.2004, 04:31 |
MSDN ![]() ![]() форум и чат - не одно и то же --- понял учту.... |
Автор: Intro 17.10.2004, 05:25 |
Всё выход нашёл сам.... + вынес все структуры в отдельный заг. файл. А самое главное DEFAULT --- это я, как понял надо было заменить на 0, то есть на DEFAULT ![]() mr.DUDA, будь по-проще... ![]() |
Автор: MorphX 22.1.2013, 14:40 |
Столкнулся с тем же. В Winsock.h прогнал поиском и нашел список протоколов. И для того самого вышеупомянутого значения 0 есть константа: #define IPPROTO_IP 0 /* dummy for IP */ |