dursino
27-03-2011, 12:13
Salve ragazzi dovrei compilare un programma banale che possa andare anche per xp e vista.
#include <stdio.h>
#include <time.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <unistd.h>
#define SA struct sockaddr
struct sockaddr_in smurf,cl_addr; //Sock_addr per connect al Server
time_t rawtime;
struct tm * timeinfo;
char buffer [29];
int main()
{
FILE* f=fopen("./captf.txt","w");
int sk= socket(PF_INET, SOCK_STREAM, 0); //Creazione Socket Tcp per dialogare con Server
memset(&smurf, 0, sizeof(smurf));
smurf.sin_family = AF_INET;
smurf.sin_addr.s_addr = htonl(INADDR_ANY);
smurf.sin_port = htons(1236);
if (bind(sk, (SA *) &smurf, sizeof(smurf)) !=0 )
{ perror("!..BIND ..!\n");
exit (1);
}
unsigned short quanti=0;
while (quanti<20)
{
int ret = listen(sk, 10);
int len = sizeof(cl_addr);
int cn_sk = accept(sk, (SA *) &cl_addr, &len);
if(cn_sk == -1)
perror("nell'accept\n");
int pid=fork();
if (pid == 0)
{
time ( &rawtime );
timeinfo = localtime ( &rawtime );
strftime (buffer,80,"%c",timeinfo);
fprintf(f,"%s",buffer);
fprintf(f,"%c",'\t');
char *s=(char*)inet_ntoa(cl_addr.sin_addr);
fprintf(f,"%s",s);
fprintf(f,"%c",'\n');
return 0;
}
wait(NULL);
quanti ++;
}
return 0;
}
Questa è la versione su Unix, per farlo andare su Xp e Vista cosa devo cambiare?
Inet_pton non è supportata?
Grazie 1000
#include <stdio.h>
#include <time.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <unistd.h>
#define SA struct sockaddr
struct sockaddr_in smurf,cl_addr; //Sock_addr per connect al Server
time_t rawtime;
struct tm * timeinfo;
char buffer [29];
int main()
{
FILE* f=fopen("./captf.txt","w");
int sk= socket(PF_INET, SOCK_STREAM, 0); //Creazione Socket Tcp per dialogare con Server
memset(&smurf, 0, sizeof(smurf));
smurf.sin_family = AF_INET;
smurf.sin_addr.s_addr = htonl(INADDR_ANY);
smurf.sin_port = htons(1236);
if (bind(sk, (SA *) &smurf, sizeof(smurf)) !=0 )
{ perror("!..BIND ..!\n");
exit (1);
}
unsigned short quanti=0;
while (quanti<20)
{
int ret = listen(sk, 10);
int len = sizeof(cl_addr);
int cn_sk = accept(sk, (SA *) &cl_addr, &len);
if(cn_sk == -1)
perror("nell'accept\n");
int pid=fork();
if (pid == 0)
{
time ( &rawtime );
timeinfo = localtime ( &rawtime );
strftime (buffer,80,"%c",timeinfo);
fprintf(f,"%s",buffer);
fprintf(f,"%c",'\t');
char *s=(char*)inet_ntoa(cl_addr.sin_addr);
fprintf(f,"%s",s);
fprintf(f,"%c",'\n');
return 0;
}
wait(NULL);
quanti ++;
}
return 0;
}
Questa è la versione su Unix, per farlo andare su Xp e Vista cosa devo cambiare?
Inet_pton non è supportata?
Grazie 1000