Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak to skompilować

Ostatnio zmodyfikowano 2009-04-05 00:05
Autor Wiadomość
zori
Temat założony przez niniejszego użytkownika
Jak to skompilować
» 2009-01-06 22:36:13
Mam tu dwa linki do dwóch programów serwer i client w Dev-C++ nie moge skompilować, ponieważ brakuje mi odpowiednich bibliotek. Czy wie ktoś może gdzie je mozna znaleźć?? Będze bardzo wdzięczny za pomoc.

linki:
http://www.ecst.csuchico.edu/~beej/guide/net/examples/listener.c - serwer
http://www.ecst.csuchico.edu/~beej/guide/net/examples/talker.c   - client
P-3523
DejaVu
» 2009-01-06 22:38:31
Dodałem do oczekujących, jutro zerknę w to.
P-3524
lynx
» 2009-01-07 00:12:33
Widzę że to jest w Socketach.
Z tego co wyczytałem to zamiast tych #includów związancyh z sicią w Windowsie robisz jeden z
C/C++
#include <winsock.h>
Jako lib dodajesz libws2_32.a.
Tutaj znalazłem kurs po polsku:
Instalacja
Lista tematów jak używać Socketów i nie tylko
P-3526
zori
Temat założony przez niniejszego użytkownika
» 2009-01-07 00:21:16
Ciekawe jeszczee dokładnie przejże te stronki THX moze coś ciekawego znajde.

/edit
Ten pierwszy link to jest kurs który przerabiłem tylko ze na innej stronce. Tu sa te kody źrudłwo do tych co ja podałem w 1 poście linki

http://pcfoster.pl/porady/c++/kurs-c++-uzywanie-gniazd-internetowych-cz.5-tlo-klient-serwer.html
P-3527
DejaVu
» 2009-01-07 02:58:47
Fatalny kod wybrałeś do nauki komunikacji sieciowej. Poprawiłem tak kod, aby kompilował się pod Visual Studio C++, ale pod GCC tego nie skompilujesz bo niektórych z użytych funkcji nie ma w bibliotekach dostępnych z Dev-C++. Co więcej, Twój program nie zadziała na systemach Win 95, 98, ME, XP poniżej SP2. Polecam poszukać innego kursu i innych przykładów. Obsługę sieci można pisać tak, że 99% kodu jest przenośne zarówno pod windowsa jak i linuxa... Niektóre funkcje pierwszy raz na oczy widzę pomimo, iż pisałem już w swoim życiu serwery TCP i UDP. Ponadto na dzień dzisiejszy obsługę IPv6 darowałbym sobie.


C/C++
/*
** listener.cpp -- a datagram sockets "server" demo
*/

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <winsock2.h>
#include <Ws2tcpip.h>
#define MYPORT "4950" // the port users will be connecting to

#define MAXBUFLEN 100

// get sockaddr, IPv4 or IPv6:
void * get_in_addr( struct sockaddr * sa )
{
    if( sa->sa_family == AF_INET ) {
        return &((( struct sockaddr_in * ) sa )->sin_addr );
    }
   
    return &((( struct sockaddr_in6 * ) sa )->sin6_addr );
}

int main( void )
{
    int sockfd;
    struct addrinfo hints, * servinfo, * p;
    int rv;
    int numbytes;
    struct sockaddr_storage their_addr;
    char buf[ MAXBUFLEN ];
    size_t addr_len;
    char s[ INET6_ADDRSTRLEN ];
   
    memset( & hints, 0, sizeof hints );
    hints.ai_family = AF_UNSPEC;
    hints.ai_socktype = SOCK_DGRAM;
    hints.ai_flags = AI_PASSIVE; // use my IP
   
    if(( rv = getaddrinfo( NULL, MYPORT, & hints, & servinfo ) ) == - 1 ) {
        fprintf( stderr, "getaddrinfo: %s\n", gai_strerror( rv ) );
        return 1;
    }
   
    // loop through all the results and bind to the first we can
    for( p = servinfo; p != NULL; p = p->ai_next ) {
        if(( sockfd = socket( p->ai_family, p->ai_socktype,
        p->ai_protocol ) ) == - 1 ) {
            perror( "listener: socket" );
            continue;
        }
       
        if( bind( sockfd, p->ai_addr, p->ai_addrlen ) == - 1 ) {
            closesocket( sockfd );
            perror( "listener: bind" );
            continue;
        }
       
        break;
    }
   
    if( p == NULL ) {
        fprintf( stderr, "listener: failed to bind socket\n" );
        return 2;
    }
   
    freeaddrinfo( servinfo );
   
    printf( "listener: waiting to recvfrom...\n" );
   
    addr_len = sizeof their_addr;
    if(( numbytes = recvfrom( sockfd, buf, MAXBUFLEN - 1, 0,
    reinterpret_cast < struct sockaddr *>( & their_addr ),( int * ) & addr_len ) ) == - 1 ) {
        perror( "recvfrom" );
        exit( 1 );
    }
   
    printf( "listener: got packet from %s\n",
    inet_ntop( their_addr.ss_family,
    get_in_addr(( struct sockaddr * ) & their_addr ),
    s, sizeof s ) );
    printf( "listener: packet is %d bytes long\n", numbytes );
    buf[ numbytes ] = '\0';
    printf( "listener: packet contains \"%s\"\n", buf );
   
    closesocket( sockfd );
   
    return 0;
}
/edit:
Jeszcze trzeba zlinkować parę dll'i, jednak tego już mi się nie chciało robić. Program po dopisaniu odpowiednich linijek do linker'a się skompiluje.

/edit2:
O szczegółach proponuję poczytać w MSDN'ie:
http://msdn.microsoft.com/en-us/library/ms738520(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms737530(VS.85).aspx
P-3529
zori
Temat założony przez niniejszego użytkownika
» 2009-01-07 12:02:46
Tu dosatłem link do tego kursu w jednym z innych tematów jesli ktos posiada lepszy będe bardzo wdzięczny bo do zaawansowanych programistów nie naleze narzie chce zrobić coś prostego przesłac między jednym a drugim komputerem 1 pakie i odczytac go.

/edit

zna ktos moze jakiś przykładow programy do przeanalizowania będe bardzo wdzięczny za pomoc.
P-3531
DejaVu
» 2009-01-09 17:15:56
Zacznij się uczyć podstaw winsock2. Gdzieś był link na forum do kursu...

/edit:
http://forum.ddt.pl/?Tid=211

/edit2:
Jeśli chcesz napisać komunikację sieciową bez większych problemów na kilka klientów polecam protokół UDP. Ma on swoje wady, jednak do nauki komunikacji sieciowej można by powiedzieć, że jest on idealny.
P-3595
mirko2413
Prośba
» 2009-04-04 23:54:59
Witam!Jestem świeżo zarejestrowanym użytkownikiem tego forum i chciałbym prosić o pomoc.am do napisania na jutro jakikolwiek program w C++za pomocą Dev-C++.Wytworzyłem coś takiego i nie mogę tego skompilować,może ktoś by mi mógł pomóc?


C/C++
#include <cstdlib>
#include <math.h>
#include <iostream>
#include <cstdio>

using namespace std;



double liczenie( int a, int h )
{
    double pol_pow;
    pol_pow = 1 / 2 * a + 1 / 2 * h;
    return pol_pow;
}
void wczytywanie()
{
    int a, h;
    double wynik;
    cout << "Wprowadz dlugosc boku (a):";
    cin >> a;
    cout << "Wprowadz wysokosc (h)";
    cin >> h;
    wynik = liczenie( a, h );
    cout << "Pole Powierzchni:" << wynik << "\n";
}

int main()
{
    wczytywanie();
   
    system( "pause" );
    return 0;
   
}
P-5292
« 1 » 2
  Strona 1 z 2 Następna strona