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
|
void* ping(void* data)
{
int port = *(int *)data;
SOCKET sock;
int n = 0;
char buffer[2];
SOCKADDR_IN sin = { 0 };
SOCKET csock;
SOCKADDR_IN csin;
socklen_t recsize = sizeof(csin);
int sock_err;
sock = socket(AF_INET, SOCK_DGRAM, 0);
if(sock == INVALID_SOCKET)
{
perror("socket()");
return NULL;
}
sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_family = AF_INET;
sin.sin_port = htons(port);
if(bind (sock, (SOCKADDR *) &sin, sizeof sin) == SOCKET_ERROR)
{
perror("bind()");
return NULL;
}
struct hostent *hostinfo = NULL;
SOCKADDR_IN from = { 0 };
int fromsize = sizeof from;
while(1){
//poll + si fin, arrêter (break)
if((n = recvfrom(sock, buffer, sizeof buffer - 1, 0, (SOCKADDR *)&from, &fromsize)) < 0)
{
perror("recvfrom()");
return NULL;
}
buffer[n] = '\0';
if(sendto(sock, buffer, n, 0, (SOCKADDR *)&from, fromsize) < 0)
{
perror("sendto()");
return NULL;
}
}
closesocket(sock);
return NULL;
} |
Partager