22/10/13 14:50
sc73
Postato originariamente da sc73:
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
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
Chiedo SCUSA!!
Questo é un errore mio: ho chiamato la bind prima di inizializzare la struttura serveraddr
Ora provo a gestire la lettura periodica dalla porta
Ultima modifica effettuata da sc73 22/10/13 14:51
aaa
22/10/13 14:51
pierotofy
Usando questa pagina come riferimento: msdn.microsoft.com/en-us/library/windows/desktop/…(v=vs.85).aspx
Il mio blog: piero.dev
23/10/13 9:01
sc73
Scusate, mi succede una cosa strana.
Ho sequenzializzato meglio l'inizializzazione per la socket:
WSAStartup(MAKEWORD(2,2), &wsda);
if ((err = WSAGetLastError()) == 0) {
s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if ((err = WSAGetLastError()) == 0)
{
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = INADDR_ANY;
serveraddr.sin_port = htons( 1234 );
if((err = bind(m_serversocket, (SOCKADDR*)&serveraddr,sizeof(SOCKADDR_IN))) < 0)
{
Str = String::Format("ERROR binding in the server socket {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
} else {
Str = String::Format("Socket Initialiation Error {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
} else {
Str = String::Format("WSAStartup Error {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
Ora peró si ferma con "ERROR binding in the server socket -1"
Ho guardato la tabella dei codici ma non trovo -1.
Qualcuno mi sa dire cosa sta succedendo?
Grazie
Ho sequenzializzato meglio l'inizializzazione per la socket:
WSAStartup(MAKEWORD(2,2), &wsda);
if ((err = WSAGetLastError()) == 0) {
s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if ((err = WSAGetLastError()) == 0)
{
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = INADDR_ANY;
serveraddr.sin_port = htons( 1234 );
if((err = bind(m_serversocket, (SOCKADDR*)&serveraddr,sizeof(SOCKADDR_IN))) < 0)
{
Str = String::Format("ERROR binding in the server socket {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
} else {
Str = String::Format("Socket Initialiation Error {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
} else {
Str = String::Format("WSAStartup Error {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
Ora peró si ferma con "ERROR binding in the server socket -1"
Ho guardato la tabella dei codici ma non trovo -1.
Qualcuno mi sa dire cosa sta succedendo?
Grazie
aaa
23/10/13 9:15
sc73
Postato originariamente da sc73:
Scusate, mi succede una cosa strana.
Ho sequenzializzato meglio l'inizializzazione per la socket:
WSAStartup(MAKEWORD(2,2), &wsda);
if ((err = WSAGetLastError()) == 0) {
s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if ((err = WSAGetLastError()) == 0)
{
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = INADDR_ANY;
serveraddr.sin_port = htons( 1234 );
if((err = bind(m_serversocket, (SOCKADDR*)&serveraddr,sizeof(SOCKADDR_IN))) < 0)
{
Str = String::Format("ERROR binding in the server socket {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
} else {
Str = String::Format("Socket Initialiation Error {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
} else {
Str = String::Format("WSAStartup Error {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
Ora peró si ferma con "ERROR binding in the server socket -1"
Ho guardato la tabella dei codici ma non trovo -1.
Qualcuno mi sa dire cosa sta succedendo?
Grazie
Scusate, mi succede una cosa strana.
Ho sequenzializzato meglio l'inizializzazione per la socket:
WSAStartup(MAKEWORD(2,2), &wsda);
if ((err = WSAGetLastError()) == 0) {
s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if ((err = WSAGetLastError()) == 0)
{
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = INADDR_ANY;
serveraddr.sin_port = htons( 1234 );
if((err = bind(m_serversocket, (SOCKADDR*)&serveraddr,sizeof(SOCKADDR_IN))) < 0)
{
Str = String::Format("ERROR binding in the server socket {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
} else {
Str = String::Format("Socket Initialiation Error {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
} else {
Str = String::Format("WSAStartup Error {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
Ora peró si ferma con "ERROR binding in the server socket -1"
Ho guardato la tabella dei codici ma non trovo -1.
Qualcuno mi sa dire cosa sta succedendo?
Grazie
Risolto, dopo varie prove ho usato la WSAGetLastError() invece di controllare direttamente la bind
Ora invece ho il problema sulla receive:
- attivo un timer che va a leggere ogni 100ms
- allo scadere del timer eseguo le seguenti istruzioni:
struct sockaddr_in server, si_other;
int slen , recv_len;
char buf[256], Str[256];
//clear the buffer by filling null, it might have previously received data
memset(buf,'
Postato originariamente da sc73:
Scusate, mi succede una cosa strana.
Ho sequenzializzato meglio l'inizializzazione per la socket:
WSAStartup(MAKEWORD(2,2), &wsda);
if ((err = WSAGetLastError()) == 0) {
s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if ((err = WSAGetLastError()) == 0)
{
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = INADDR_ANY;
serveraddr.sin_port = htons( 1234 );
if((err = bind(m_serversocket, (SOCKADDR*)&serveraddr,sizeof(SOCKADDR_IN))) < 0)
{
Str = String::Format("ERROR binding in the server socket {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
} else {
Str = String::Format("Socket Initialiation Error {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
} else {
Str = String::Format("WSAStartup Error {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
Ora peró si ferma con "ERROR binding in the server socket -1"
Ho guardato la tabella dei codici ma non trovo -1.
Qualcuno mi sa dire cosa sta succedendo?
Grazie
Scusate, mi succede una cosa strana.
Ho sequenzializzato meglio l'inizializzazione per la socket:
WSAStartup(MAKEWORD(2,2), &wsda);
if ((err = WSAGetLastError()) == 0) {
s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if ((err = WSAGetLastError()) == 0)
{
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = INADDR_ANY;
serveraddr.sin_port = htons( 1234 );
if((err = bind(m_serversocket, (SOCKADDR*)&serveraddr,sizeof(SOCKADDR_IN))) < 0)
{
Str = String::Format("ERROR binding in the server socket {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
} else {
Str = String::Format("Socket Initialiation Error {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
} else {
Str = String::Format("WSAStartup Error {0}", err);
MessageBox::Show(Str,"Error", MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
exit(EXIT_FAILURE);
}
Ora peró si ferma con "ERROR binding in the server socket -1"
Ho guardato la tabella dei codici ma non trovo -1.
Qualcuno mi sa dire cosa sta succedendo?
Grazie
Risolto, dopo varie prove ho usato la WSAGetLastError() invece di controllare direttamente la bind
Ora invece ho il problema sulla receive:
- attivo un timer che va a leggere ogni 100ms
- allo scadere del timer eseguo le seguenti istruzioni:
struct sockaddr_in server, si_other;
int slen , recv_len;
char buf[256], Str[256];
//clear the buffer by filling null, it might have previously received data
memset(buf,'{parsed_message}', 256);
//try to receive some data, this is a blocking call
recv_len = recvfrom(s, buf, 256, 0, (struct sockaddr *) &si_other, &slen));
label20->Text = System::Runtime::InteropServices::Marshal::PtrToStringAnsi(IntPtr(buf));
Risultato:
buff é sempre vuoto.
Qualcuno mi sa indicare come mai?
Grazie
', 256);
//try to receive some data, this is a blocking call
recv_len = recvfrom(s, buf, 256, 0, (struct sockaddr *) &si_other, &slen));
label20->Text = System::Runtime::InteropServices::Marshal::PtrToStringAnsi(IntPtr(buf));
Risultato:
buff é sempre vuoto.
Qualcuno mi sa indicare come mai?
Grazie
Ultima modifica effettuata da sc73 23/10/13 9:16
aaa