クライアントからの接続を受け入れるだけのサーバーのプログラムを作成しました。そのために、無限ループの受け入れ関数。しかし、ループの直前に出力されたメッセージを実行すると、出力されません。私のコードは次のとおりです。
#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
void main()
{
int sock,bind_sock,lis_sock,cli_sock,addr_len;
struct sockaddr_in addr,cli_addr;
if ((sock=socket(AF_INET,SOCK_STREAM,0))<0)
printf("\nsocket error");
else
printf("socket");
addr.sin_family=AF_INET;
addr.sin_port=htons(5012);
addr.sin_addr.s_addr=htonl(INADDR_ANY);
if((bind_sock=bind(sock,(struct sockaddr *)&addr,sizeof(addr)))<0)
printf("\nBound error");
else
printf("Bound");
if((lis_sock=listen(sock,10))<0)
printf("\nlisten error");
else
printf("listen\nwaiting for connection" );
while(1)
{
addr_len=sizeof(cli_addr);
cli_sock=accept(sock,(struct sockaddr *)&cli_addr,&addr_len);
if(cli_sock<0)
printf("\nConnetion Error\n");
else
printf("conneted\n");
}
出力は次のとおりです。
]$ ./a.out
socketBoundlisten