Не могу скомпилировать следующий код: Code: #include <winsock> #pragma comment (lib,"WSock32.Lib") #include <iostream> using namespace std; void main() { WSAData WSData; WSAStartup(0x101,&WSData); SOCKET S = socket(AF_INET,SOCK_STREAM,0); sockaddr_in SA; SA.sin_family=AF_INET; SA.sin_port=htons(3135); SA.sin_addr.S_un.S_addr=INADDR_ANY; bind(S,(sockaddr*)&SA,sizeof(SA)); listen(S,SOMAXCONN); SOCKET NS; while ((NS = accept(S,0,0))!=INVALID_SOCKET) { cout<<"-------------------->\n"; cout<<"Connected...\n"; char n = 0; recv(NS,&n,1,0); cout<<"Received Length = "<< int(n) <<"\n"; char* a=new char[100]; recv(NS,a,n,0); cout<<"Received: \""; for (int i=0;i<n;i++) { cout<<a[i]; } cout<<"\"\n"; closesocket(NS); cout<<"-------------------->\n"; } closesocket(S); int n; компилятор ругается: fatal error C1083: Cannot open include file: 'winsock': No such file or directory каким образом мне подключить winsock? работаю в VS2008(VC++)
Самое интересное, что так тоже пробовал!в таком случаее выдает другую ошибку: fatal error C1075: end of file found before the left brace '{' at 'c:\users\alex\documents\visual studio 2008\projects\exercise\exercise\exersice.cpp(9)' was matched не понятно почему компилятор ругается на какие-то скобки?
Да бывает... забыл скобку закрывающую функцию маин Возникла следующая проблема. не могу скомпилить релиз так как компилятор выдает следующее сообщение: The thread 'Win32 Thread' (0xb9c) has exited with code -1073741510 (0xc000013a). The program '[3940] exercise.exe: Native' has exited with code -1073741510 (0xc000013a). То есть моя программа если все в порядке должна завершиться с кодом "0". в чем может быть причина?
Я конечно могу ошибаться(все таки C++ плохо еще знаю), но ты пробовал сделать что бы все таки main возращало что то. int main() ..... return 0; ? Попробуй, вдруг поможет...
Пробовал конечно! на это компилятор как не странно говорит, что main() не должна ничего возвращать.. ну это с одной строны понятно, потомучто она задана как void, что само собой значит-функция не имеет аргументов и не возвращает значения!
Компилил в релиз в vc2005 Проверь что точно создан консольный проэкт. Компилил этот код. Code: #include <winsock2.h> #pragma comment (lib,"ws2_32.lib") #include <iostream> using namespace std; void main() { WSAData WSData; WSAStartup(0x101,&WSData); SOCKET S = socket(AF_INET,SOCK_STREAM,0); sockaddr_in SA; SA.sin_family=AF_INET; SA.sin_port=htons(3135); SA.sin_addr.S_un.S_addr=INADDR_ANY; bind(S,(sockaddr*)&SA,sizeof(SA)); listen(S,SOMAXCONN); SOCKET NS; while ((NS = accept(S,0,0))!=INVALID_SOCKET) { cout<<"-------------------->\n"; cout<<"Connected...\n"; char n = 0; recv(NS,&n,1,0); cout<<"Received Length = "<< int(n) <<"\n"; char* a=new char[100]; recv(NS,a,n,0); cout<<"Received: \""; for (int i=0;i<n;i++) { cout<<a[i]; } cout<<"\"\n"; closesocket(NS); cout<<"-------------------->\n"; } closesocket(S); int n; }
Не может компилятор такого выдать. Это дебаггер после запуска выдает наверное. "void main()" измени на "int main()" и возврат в конце добавь. Еще погугли WSACleanup(void) и shutdown(SOCKET, int)
Вопрос решился путем ребилда проекта! больше ошиок нет все компилиться и работает! всем спасибо за помощь!!!