1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| struct sockaddr_in addr;
struct sockaddr addC;
SOCKET hSocket;
struct sockaddr addrConnect;
int nPort = 80;
char * pszHost = "91.121.134.221";
hSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
/* Liaison avec le port local (ici 0) */
addr.sin_family = AF_INET ;
addr.sin_addr.s_addr = htonl (INADDR_ANY);
addr.sin_port = htons ((unsigned short)nPort ); // 0 LE Port de sortie du client
if ( bind ( hSocket , (struct sockaddr *)&addr, sizeof(addr)) == SOCKET_ERROR ) //C
{
addC.sa_family =AF_INET;
addC = TcpFormatAdress( pszHost, (u_short)6250 );
connect( hSocket, &addC, sizeof(addC));
closesocket ( hSocket ) ;
}
//###############################################
//###############################################
static struct sockaddr TcpFormatAdress( char * host, u_short port )
{
struct sockaddr_in addr;
struct sockaddr addrRet;
struct hostent FAR *lphost ;
u_long IP;
memset((char*)&addr, 0, sizeof(addr));
/* Soit on fournit une adresse IP, soit on fournit un nom */
if ((IP = inet_addr(host)) == (u_long)INADDR_NONE)
{
if ((lphost = gethostbyname(host))==NULL)
{
memset( (char * )&addrRet, 0, sizeof(addrRet) );
return addrRet;
}
addr.sin_family = lphost->h_addrtype;
#ifdef _WIN16 /* A définir dans le projet WIN16 */
_fmemcpy (&addr.sin_addr, lphost->h_addr, lphost->h_length);
#else /* WIN32, UNIX*/
memcpy (&addr.sin_addr, lphost->h_addr, lphost->h_length);
#endif
}
else
{
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = IP;
}
/* Port destination */
addr.sin_port = htons((u_short)port );
memcpy( (char *)&addrRet, (char *)&addr, sizeof(addrRet) );
return addrRet;
}
//###############################################
//############################################### |
Partager