illy
05-10-2005, 11:50
sto cercanto di creare 2 programmi(un cliente e un server) in grado di collegarsi tra loro e scambiarsi informazioni ma sono rimasta un pò bloccata:
codice server:
#include <stdio.h>
#include <stdlib.h>
#include <afxsock.h>
void main ()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
// Tell the user that we could not find a usable
// WinSock DLL.
return;
}
SOCKET srvsock = socket (AF_INET, SOCK_STREAM, 0);
sockaddr_in SrvSAddr, ConnectAddr;
SrvSAddr.sin_family = AF_INET;
SrvSAddr.sin_addr.s_addr = htonl (INADDR_ANY);
SrvSAddr.sin_port = htons (7000);
bind (srvsock, (sockaddr*)&SrvSAddr, sizeof (SrvSAddr));
listen(srvsock,5);
//ciclo di attesa per ricevere una connesione(aspetta in eterno)
while (1)
{
int Addrlen = sizeof(ConnectAddr);
SOCKET newsock = accept (srvsock, (sockaddr*)& ConnectAddr, &Addrlen); //riceve la connesione
HANDLE connesso;
CreateThread(NULL,NULL,connesso,&newsock,0,0); // connesso = nuovo Thread
recv(socket,char *buff,50,0); // Và nel thread e riceve i dati dal "Client"
}
closesocket(srvsock);
}
questo invece è il codice a cui per ora sono arrivata del client(questo è proprio trascurato):
#include <stdio.h>
#include <stdlib.h>
#include <afxsock.h>
void main ()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
// Tell the user that we could not find a usable
// WinSock DLL.
return;
}
SOCKET Socket = socket(AF_INET, SOCK_STREAM,0);
sockaddr_in ClientSocket;
ClientSocket.sin_addr.s_addr = inet_addr ("192.168.255.11");
ClientSocket.sin_port = htons (7000);
connect(Socket, (sockaddr*)& Socket, sizeof(Socket) );
printf("Connessione stabilita");
closesocket(Socket);
}
codice server:
#include <stdio.h>
#include <stdlib.h>
#include <afxsock.h>
void main ()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
// Tell the user that we could not find a usable
// WinSock DLL.
return;
}
SOCKET srvsock = socket (AF_INET, SOCK_STREAM, 0);
sockaddr_in SrvSAddr, ConnectAddr;
SrvSAddr.sin_family = AF_INET;
SrvSAddr.sin_addr.s_addr = htonl (INADDR_ANY);
SrvSAddr.sin_port = htons (7000);
bind (srvsock, (sockaddr*)&SrvSAddr, sizeof (SrvSAddr));
listen(srvsock,5);
//ciclo di attesa per ricevere una connesione(aspetta in eterno)
while (1)
{
int Addrlen = sizeof(ConnectAddr);
SOCKET newsock = accept (srvsock, (sockaddr*)& ConnectAddr, &Addrlen); //riceve la connesione
HANDLE connesso;
CreateThread(NULL,NULL,connesso,&newsock,0,0); // connesso = nuovo Thread
recv(socket,char *buff,50,0); // Và nel thread e riceve i dati dal "Client"
}
closesocket(srvsock);
}
questo invece è il codice a cui per ora sono arrivata del client(questo è proprio trascurato):
#include <stdio.h>
#include <stdlib.h>
#include <afxsock.h>
void main ()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
// Tell the user that we could not find a usable
// WinSock DLL.
return;
}
SOCKET Socket = socket(AF_INET, SOCK_STREAM,0);
sockaddr_in ClientSocket;
ClientSocket.sin_addr.s_addr = inet_addr ("192.168.255.11");
ClientSocket.sin_port = htons (7000);
connect(Socket, (sockaddr*)& Socket, sizeof(Socket) );
printf("Connessione stabilita");
closesocket(Socket);
}