Autor Wątek: [C]problem z obsluga sieci  (Przeczytany 1354 razy)

Offline tomekp

  • Użytkownik

# Luty 22, 2007, 12:15:18
Chcialbym napisac obsluge sieci w pewnym programie ale musze to zrobic w czystym C. kod wyglada mniej wiecej tak. blad mi sie pojawia taki: error C2065: 'sockaddr_in' : undeclared identifier. Wszystkie biblioteki dolaczam. Gdy kompiluje to w C++ to wszystko dziala :/ uzywam MsVS2006
WSADATA wsaData;
SOCKET m_socket;
sockaddr_in service;

int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
if ( iResult != NO_ERROR ) { printf("Error at WSAStartup()\n");}

m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );

if ( m_socket == INVALID_SOCKET ) {
printf( "Error at socket(): %ld\n", WSAGetLastError() );
WSACleanup();
}

service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr( "127.0.0.1" );
service.sin_port = htons( 27015 );

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Luty 22, 2007, 13:15:49
Welcome to C. Zamiast "sockaddr_in" musisz tutaj pisać "struct sockaddr_in", ponieważ każda deklaracja struktury w C musi być poprzedzone słowem kluczowym "struct" przed samą nazwą typu. :)

Offline tomekp

  • Użytkownik

# Luty 22, 2007, 13:28:24
ha! wielkie dzięki! :) są jeszcze jakieś "znaczące" różnice? chyba i tak bede musial przejrzec ksiazke o c...
edit: zauważyłem że zmienne muszą być deklarowane na początku kodu, a to już jest dla mnie fe :P
« Ostatnia zmiana: Luty 22, 2007, 13:31:08 wysłana przez tomekp »

bies

  • Gość
# Luty 22, 2007, 13:41:48
Jeśli nie musisz to nie używaj VC++ do C. To nie jest kompilator C (C kompiluje tylko przypadkiem i w archaicznym dialekcie). Ściągnij gcc z mingw.org i tego użyj. Tylko włącz obsługę C99 (-std=c99). Nie będziesz miał problemów z deklarowaniem zmiennych na początku bloków. W ogóle będzie mniej problemów.