Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - sockets
Forum - C/C++ - sockets - Pagina 2

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6379
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:27
Martedì, 22/10/2013
Testo quotato

... pensavo di aver creato un progetto c++ invece era un .NET ...



Questo non è un problema di Microsoft ma di tua scarsa conoscenza personale di quello che utilizzi.

Testo quotato

una mia opinione personale condivisa da molti miei colleghi e amici



Esatto, come la mia e quella di molti miei colleghi ... quindi lasciamo perdere.

Testo quotato

non capisco come creare un'applicazione che faccia da Server utilizzando i socket con protocollo UDP ( NON TCP !!!).



Questo l'ho capito ma, come ti ho scritto prima, *praticamente* come ti rispondiamo?

Se non capisci come creare l'applicazione, vuoi che la creiamo noi?

Oppure cominci ad indicare quello che non hai capito e, passo passo, si arriva ad una soluzione?

Oppure faccio una ricerca di una applicazione UDP e ti fornisco il link?

Ultima modifica effettuata da nessuno il 22/10/2013 alle 14:44


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
sc73 (Normal User)
Rookie


Messaggi: 56
Iscritto: 07/06/2012

Segnala al moderatore
Postato alle 15:43
Martedì, 22/10/2013
Allora, cominciamo:

#include <winsock2.h>

Nell'evento load del form principale metto:

    SOCKADDR_IN serveraddr;
    int portno = 1819;
    memset(&serveraddr,0, sizeof(serveraddr));
    serveraddr.sin_family = AF_INET;
    serveraddr.sin_port = htons(portno);
    serveraddr.sin_addr.s_addr = INADDR_ANY;

    m_serversocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    if(m_serversocket == -1)
    {
        MessageBox::Show("Socket Initialiation Error","Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
    }

    if(bind(m_serversocket, (SOCKADDR*)&serveraddr,sizeof(SOCKADDR_IN)) < 0)
    {
         MessageBox::Show("ERROR binding in the server socket","Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
         exit(1);
    }

Mi da un errore il linker per:

socket
bind
htons

dove sto sbagliando?


Ultima modifica effettuata da sc73 il 22/10/2013 alle 15:44
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 15:51
Martedì, 22/10/2013
Partendo dalla chiamata a socket:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms ...

Se chiami WSAGetLastError dopo che la chiamata e' fallita, probabilmente noterai che ritorna WSANOTINITIALISED.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms ...


Il mio blog: https://piero.dev
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6379
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:01
Martedì, 22/10/2013


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
sc73 (Normal User)
Rookie


Messaggi: 56
Iscritto: 07/06/2012

Segnala al moderatore
Postato alle 16:11
Martedì, 22/10/2013
Testo quotato

Postato originariamente da pierotofy:

Partendo dalla chiamata a socket:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms ...

Se chiami WSAGetLastError dopo che la chiamata e' fallita, probabilmente noterai che ritorna WSANOTINITIALISED.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms ...



Ok, ho aggiunto la WSAStartup, ma continuo ad avere i soliti tre errori di linker.
Eppure Winsock2.h l'ho incluso e nell'help dice solo di includere il .h
Io pensavo che mi mancasse una libreria, ma non ne parla



Ultima modifica effettuata da sc73 il 22/10/2013 alle 16:13
PM Quote
Avatar
sc73 (Normal User)
Rookie


Messaggi: 56
Iscritto: 07/06/2012

Segnala al moderatore
Postato alle 16:32
Martedì, 22/10/2013
Ok, il link suggerito da "nessuno" mensionava la ws2_32.lib e cosí compila.
Ora lanciandolo mi dice "ERROR binding in the server socket", ovvero fallisce la bind.
Sto sbagliando qualcosa?

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:36
Martedì, 22/10/2013
WSAGetLastError() cosa ritorna? Devi fare un po' di tentativi su...


Il mio blog: https://piero.dev
PM Quote
Avatar
sc73 (Normal User)
Rookie


Messaggi: 56
Iscritto: 07/06/2012

Segnala al moderatore
Postato alle 16:44
Martedì, 22/10/2013
    int err;

        WSAStartup(MAKEWORD(2,2), &wsda);
    err = WSAGetLastError();   // err = 0
    m_serversocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    err = WSAGetLastError();   // err = 0
    if(m_serversocket == -1)
    {
        MessageBox::Show("Socket Initialiation Error","Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
    }

    if((err = bind(m_serversocket, (SOCKADDR*)&serveraddr,sizeof(SOCKADDR_IN))) < 0)
   // err = 0xffffffff

Ultima modifica effettuata da sc73 il 22/10/2013 alle 16:45
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo