Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 11.06.2010, 00:43   #1
SmallUser
 
Регистрация: 10.06.2010
Сообщений: 8
По умолчанию Почему столько ошибок???

Столкнулся с такой задачей: нужно написать приложение на С++ которое могло бы принимать и отправлять данные. В сетевом программировании "0". Компилятор (Visual Studio 2008) выдает 66 ошибок такого характера:

1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h (91) : warning C4005: 'AF_IPX' : macro redefinition
1> c:\program files\microsoft visual studio 9.0\vc\include\winsock.h(460) : see previous definition of 'AF_IPX'
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h (437) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

winsock2.h и windows.h в stdafx.h прописывал. Библиотеку wsock2_32.dll подключал - не помогает.
Почему ошибок так много и как их устранить?
SmallUser вне форума
Старый 11.06.2010, 00:53   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

А код показать не желаете? )
netrino вне форума
Старый 11.06.2010, 01:06   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

потому что не надо инклюдить winsock2.h дополнительно, обычно он сразу с windows.h инклюдится.
если б перевели ошибку и прочли их, то понял б сами.
так как первая ошибка гласит что макрос объявляется еще раз
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 11.06.2010, 10:55   #4
SmallUser
 
Регистрация: 10.06.2010
Сообщений: 8
По умолчанию

Код:
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
//#include <WinSock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.dll")


int main()
{WSADATA wsaData;
Socket s;
Socket n;
SOKADDR_IN ServerAddr;
int Port = 6161;
int role1, b, role2, role3, inf1, inf2, mon1, mon2, mon3, probl, voltage, money, k1, k2, otp1, otp2;
int rez; 
 
WSAStartUp(MAKEWORD(2.2),&WSAData);

if(s=socket(AF_INET, SOCK_STREAM, 0)>0)
 cout<<"Connecting!";
else
 {cout<<"ERROR! NOT OPENED!";
  return -1;
 }

  ServerAddr.sin_family = AF_INET;
  ServerAddr.sin_port = htons(Port);    
  ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
  
connect(s, (SOCKADDR *) &ServerAddr, sizeof(ServerAddr));

rez=recv(s,&role1,4,0);
 if(rez==SOCKET_ERROR)
  cout<<"Error in 1 step";
  
 rez=recv(s,&role2,4,0);
 if(rez==SOCKET_ERROR)
  cout<<"Error in 2 step";
   
rez=recv(s,&role3,4,0);
 if(rez==SOCKET_ERROR)
  cout<<"Error in 3 step";
  
rez=recv(s,&probl,4,0);
 if(rez==SOCKET_ERROR)
  cout<<"Error in 4 step";
  
closesocket(s); 

if(s=socket(AF_INET, SOCK_STREAM, 0)>0)
 cout<<"Connecting!";
else
 {cout<<"ERROR! NOT OPENED!";
  return -1;
 }

  ServerAddr.sin_family = AF_INET;
  ServerAddr.sin_port = htons(Port);    
  ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.2");
  
connect(s, (SOCKADDR *) &ServerAddr, sizeof(ServerAddr));

rez=recv(s,&voltage,4,0);
 if(rez==SOCKET_ERROR)
  cout<<"Error in 5 step";
 closesocket(s); 

if(s=socket(AF_INET, SOCK_STREAM, 0)>0)
 cout<<"Connecting!";
else
 {cout<<"ERROR! NOT OPENED!";
  return -1;
 }

  ServerAddr.sin_family = AF_INET;
  ServerAddr.sin_port = htons(Port);    
  ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.3");
  
 connect(s, (SOCKADDR *) &ServerAddr, sizeof(ServerAddr));
 
rez=recv(s,&inf1,4,0);
 if(rez==SOCKET_ERROR)
  cout<<"Error in 6 step";
   
rez=recv(s,&mon1,4,0);
 if(rez==SOCKET_ERROR)
  cout<<"Error in 7 step";  
 closesocket(s); 


 if(s=socket(AF_INET, SOCK_STREAM, 0)>0)
 cout<<"Connecting!";
else
 {cout<<"ERROR! NOT OPENED!";
  return -1;
 }

  ServerAddr.sin_family = AF_INET;
  ServerAddr.sin_port = htons(Port);    
  ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.4");
  
 connect(s, (SOCKADDR *) &ServerAddr, sizeof(ServerAddr));
 
rez=recv(s,&inf2,4,0);
 if(rez==SOCKET_ERROR)
  cout<<"Error in 8 step";
   
rez=recv(s,&mon2,4,0);
 if(rez==SOCKET_ERROR)
  cout<<"Error in 9 step";  
 closesocket(s);  

 if(s=socket(AF_INET, SOCK_STREAM, 0)>0)
 cout<<"Connecting!";
else
 {cout<<"ERROR! NOT OPENED!";
  return -1;
 }

  ServerAddr.sin_family = AF_INET;
  ServerAddr.sin_port = htons(Port);    
  ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.5");
  
connect(s, (SOCKADDR *) &ServerAddr, sizeof(ServerAddr));
 
rez=recv(s,&mon3,4,0);
 if(rez==SOCKET_ERROR)
  cout<<"Error in 10 step"; 
closesocket(s); 

money=(((mon1-5)>>5)+((mon2-5)>>5)+((mon3-5)>>5));
voltage=(((voltage-4)>>5)*(probl-2));
if(probl>role2)
 cout<<"Big Losses!";
 
if(((inf1-6)>>5)+((inf2-6)>>5)==voltage)
 {s=socket(AF_INET, SOCK_STREAM, 0);
  ServerAddr.sin_family = AF_INET;
  ServerAddr.sin_port = htons(Port);    
  ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.3");
  connect(s, (SOCKADDR *) &ServerAddr, sizeof(ServerAddr));
  h=(inf1-6)+4;
  send(s,&h,4,0);

  n=socket(AF_INET, SOCK_STREAM, 0);
  ServerAddr.sin_family = AF_INET;
  ServerAddr.sin_port = htons(Port);    
  ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.6");
  connect(s, (SOCKADDR *) &ServerAddr, sizeof(ServerAddr));
  h=(inf2-6)+4;
  send(s,&h,4,0);
 }
 
if(((inf1-6)+(inf2-6))>(voltage-4))
 {b=(voltage-4)/((inf1-6)+(inf2-6));
 otp1=(b*(inf1-6)+4);
 otp2=(b*(inf2-6)+4);
send(s,&otp1,4,0);
send(n,&otp2,4,0);

k1=((inf1-2)-otp1);
k2=((inf2-2)-otp2);
k1=(k1-4)*(role1+role3-6);
k2=(k2-4)*(role1+role3-6);
send(s,&k1,4,0);
send(n,&k2,4,0);

closesocket(s);
closesocket(n);
WSACleanup();
}
SmallUser вне форума
Старый 11.06.2010, 10:56   #5
SmallUser
 
Регистрация: 10.06.2010
Сообщений: 8
По умолчанию

Содержимое stdafx.h :
Код:
#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <Windows.h>
//#include <WinSock2.h>
SmallUser вне форума
Старый 11.06.2010, 10:59   #6
SmallUser
 
Регистрация: 10.06.2010
Сообщений: 8
По умолчанию

Результат компиляции: 102 error(s), 1 warning(s)
ошибки такие:
error C2065: 'Socket' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 's'
error C2065: 'ServerAddr' : undeclared identifier
warning C4003: not enough actual parameters for macro 'MAKEWORD'
SmallUser вне форума
Старый 11.06.2010, 11:27   #7
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Так, книгу в руки и учить winsock )
если говорить хотя бы о тех ошибках что предоставили вы,то
1. тип называется socket(маленькая s)
2. тип называется sockaddr_in(все маленькие)
3. MAKEWORD принимает 2 параметра типа int - MAKEWORD(2, 2)
также нужно писать не #pragma comment(lib, "ws2_32.dll"), но #pragma comment(lib, "ws2_32.lib")
дальше не смотрел, но подозреваю последующие ошибки тоже подобного типа и решаются прочтением небольшого мануала по winsock
netrino вне форума
Старый 11.06.2010, 21:07   #8
SmallUser
 
Регистрация: 10.06.2010
Сообщений: 8
Радость

Огромное спасибо! С кодом разобрался, все работает.
SmallUser вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запомнить столько Данных? valerij Microsoft Office Excel 18 03.05.2010 19:52
QuickSort на столько быстро, на сколько это возможно Kn793 Общие вопросы C/C++ 2 10.04.2010 09:28
обнаружение ошибок makar575 Фриланс 3 18.12.2007 07:56
TStringGrid - изначально мы видим одну ячейку в конце должно быть столько сколько заполнили. Ensoph Компоненты Delphi 5 18.10.2007 22:24