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
| struct sockaddr_in addr;
struct sockaddr_in claddr;
int sd,asd,established,i,retval,error,lg;
retval = opensocket( SOCK_STREAM, &error );
if(retval == API_ERROR)//API_ERROR = -1, voir TCPIPAPI.h
{
printf("\r\nSocket open failed: %d",error);
goto TCP_SERVER_DONE;
}
else
{
sd = retval;
}
addr.sin_family = PF_INET;
//convert your sending port to correct byte order
retval = htons(TM_PORT_ECHO);
addr.sin_port = retval;
addr.sin_addr.s_addr = 0L;
retval = bind( sd, (struct sockaddr *) &addr, &error );
if(retval == API_ERROR)
{
printf("\r\nTCPserver: Socket bind failed: %d",error);
goto TCP_SERVER_DONE;
}
while(1) //do forever
{
printf("\r\nTCPserver: Listening for connection on socket");
retval = listen( sd, 1, &error );// 1 -> nb max de connections écoutées en meme temps
if(retval == API_ERROR)// !=-1
{
printf("\r\nTCPserver: Socket listen failed: %d",error);
goto TCP_SERVER_DONE;
}
claddr.sin_family = PF_INET;
claddr.sin_port = 0;
claddr.sin_addr.s_addr = 0L;
lg = sizeof(struct sockaddr);
retval = accept( sd, (struct sockaddr *) &claddr, &lg );
/*avant la fonction avait &error au lieu de &lg*/
if(retval == API_ERROR)
{
printf("\r\nTCPserver: Socket accept failed: %d",error);
goto TCP_SERVER_DONE;
} |
Partager