Oppure

Loading
22/10/13 12:20
sc73
Postato originariamente da nessuno:

Beh ... la libertà di scegliere tra diverse soluzioni è quello che preferisco di Microsoft ... semmai, al contrario, certe volte ne lascia poche.

Ma continuo a non capire quale sia la tua richiesta precisa.


Non sono per niente daccordo: quando si sceglie una tipologia di progetto, accetta anche altri costrutti, favorendo la creazione di progetti ibridi (esperienza personale dato che nel mio primo progetto pensavo di aver creato un progetto c++ invece era un .NET e al suo interno, se non per determinati costrutti dove voleva per forza quelli del . NET, ha accettato c, c++ e .NET).
Inoltre spesso ho notato che se si tenta di interfacciarsi con applicativi non Microsoft, c'é da mettersi le mani nei capelli.
A parte questo, che é semplicemente una mia opinione personale condivisa da molti miei colleghi e amici, il mio problema mi sembra di averlo spiegato fin troppo chiaramente: non capisco come creare un'applicazione che faccia da Server utilizzando i socket con protocollo UDP ( NON TCP !!!).

L'esempio che ho trovato, di cui ho allegato il link, funziona bene ma fa uso delle librerie MFC che io non posso usare.
Ultima modifica effettuata da sc73 22/10/13 12:32
aaa
22/10/13 12:27
... 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.

una mia opinione personale condivisa da molti miei colleghi e amici


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

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 22/10/13 12:44
22/10/13 13:43
sc73
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 22/10/13 13:44
aaa
22/10/13 13:51
pierotofy
Partendo dalla chiamata a socket:

msdn.microsoft.com/en-us/library/windows/desktop/…(v=vs.85).aspx

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

msdn.microsoft.com/en-us/library/windows/desktop/…(v=vs.85).aspx
Il mio blog: piero.dev
22/10/13 14:01
22/10/13 14:11
sc73
Postato originariamente da pierotofy:

Partendo dalla chiamata a socket:

msdn.microsoft.com/en-us/library/windows/desktop/…(v=vs.85).aspx

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

msdn.microsoft.com/en-us/library/windows/desktop/…(v=vs.85).aspx


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 22/10/13 14:13
aaa
22/10/13 14:32
sc73
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?
aaa
22/10/13 14:36
pierotofy
WSAGetLastError() cosa ritorna? Devi fare un po' di tentativi su...
Il mio blog: piero.dev