ciao!!
ho un problema di comunicazione tra un socket-server fatto in VC++ e un client fatto in C#.
scrivo qua perchè penso che il problema sia più client
molto banali entrambi.
questo il server:
codice:
UINT Server::initConnection() {
cout << "SERVER STARTED. PRESS ENTER EXIT" << endl;
WSADATA wsaData;
sockaddr_in local;
sockaddr_in from;
int wsaret = WSAStartup(0x101, &wsaData);
int fromlen = sizeof(from);
if(wsaret != 0)
{
return 0;
}
local.sin_family = AF_INET; // ADDRESS FAMILY
local.sin_addr.s_addr = INADDR_ANY; // WILD CARD IP ADDRESS
local.sin_port = htons((u_short) 20248); // PORT
server = socket(AF_INET, SOCK_STREAM, 0);
if (server == INVALID_SOCKET)
{
return 0;
}
if (bind(server, (sockaddr*) & local, sizeof (local)) != 0)
{
return 0;
}
if (listen(server, 10) != 0)
{
return 0;
}
while(true)
{
char temp[512];
inAscolto = accept(server, (struct sockaddr*) &from, &fromlen);
sprintf_s(temp, "YOUR IP IS: %s", inet_ntoa(from.sin_addr));
send(inAscolto, temp, strlen(temp), 0);
cout << "CONNECTION FROM " << inet_ntoa(from.sin_addr) << endl;
}
}
questo il client:
codice:
public void socketConnection()
{
Socket socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socketClient.Connect("localhost", 20248);
}
in pratica, se mi connetto al server tramite telnet ricevo il messaggio, e quindi posso supporre che funzioni.
mentre se mi connetto in C# nn ricevo nulla e il programma esce subito senza errori.
secondo voi dove sto sbagliando???