Winsock pod dev

0

Witam!!

Na stronir <url>www.code-makler.prv.pl</url> jest kurs Winsock i pierwsza częś kursu mówi, żeby sprawdzić wersje socketów (czy czegoś podobnego) za pomocą c++ i jest tam podany taki kod:

#include <winsock2.h>
WSADATA wsaData;
WORD wersja;
int blad;
wersja = MAKEWORD(2,0);
blad = WSAStartup(wersja, &wsaData );
if ( blad != 0 )
{
printf( "błąd!");
return FALSE;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 0 )
{
printf("błąd nie ta wersja winsock");
WSACleanup();
return FALSE;
} 

Otóż ten kod nie chce mi się skompilować i nie wiem czemu może jest to wywołane dla tego, że korzystam z deva. Może mi ktoś pomóc?

1

odrobine zmodyfikowany kod ( tj dodalem include stdio.h i "ramke" main'a )

#include <winsock2.h>
#include <stdio.h>

WSADATA wsaData;
WORD wersja;
int blad;

int main( void )
{
  wersja = MAKEWORD(2,0);
  blad = WSAStartup(wersja, &wsaData );
  if ( blad != 0 )
  {
    printf( "blad!");
    return 1;
  }
  if ( LOBYTE( wsaData.wVersion ) != 2 ||
  HIBYTE( wsaData.wVersion ) != 0 )
  {
    printf("blad nie ta wersja winsock");
    WSACleanup();
    return 1;
  }
  return 0;
}

kompilacja sprawdzona:

23:06:45 LiTeStEp >gcc cos.c -lws2_32
23:07:04 LiTeStEp >a

23:07:13 LiTeStEp >

jesli bedziesz kompilowal w dev-cpp, to musisz w opcjach projektu (alt+p) w opcjach linkera dodac -lws2_32 lub plik z katalogu dev-cpp\lib libws2_32.a

0

Dobra to już mi działa ale znowu mam kod, który mi nie działa:

#include<winsock2.h> 
#include<windows.h> 
#include<stdio.h> 

WSADATA wsaData;
WORD wersja;
int blad;
int rozmiar;
char bufor[500];
SOCKET soc_klient;
struct sockaddr_in sin;

int main(int argc,char** argv)
{
wersja = MAKEWORD( 2, 0 );
blad = WSAStartup(wersja, &wsaData );
if ( blad != 0 )
{
printf("WSAStartup - błąd!");
return 0;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 0 )
{
printf("błąd zła wersja winsock");
WSACleanup();
return 0;
}

soc_klient = socket( AF_INET, SOCK_STREAM, 0 );

struct hostent *host;
host=gethostbyname("localhost");

struct sockaddr_in sin;
memset( &sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = ((struct in_addr *)(host->h_addr))->s_addr;
sin.sin_port = htons(12345);

if ( connect(soc_klient,(struct sockaddr *) &sin, sizeof(sin)) == SOCKET_ERROR )
{
printf("połączenie nie powiodło się");
WSACleanup();
return 0;
}else
{
strcpy(bufor,"Code-Maker - najlepsza strona!");
send(soc_klient,bufor,strlen(bufor),0);
}
closesocket( soc_klient);
WSACleanup();
return 0;
} 

Kompiluje się ale się nie uruchamia, żaden błąd nie wyskakuje. Pomóżcie!!

1

Hmm mi sie nie chcialo kompilowac.. bo ... kompilator byl przekonany ze sin to jest sin(), czyli liczenie sinusa... zmienilem nazwe na s_in, i wszystko chodzi.. wiec chyba i to chodzi...

1 użytkowników online, w tym zalogowanych: 0, gości: 1