/************************************************************************ * Name : stop_mp3_server.c * * Action: ****番ポートで待ち受けて、接続があったらmpg123をkillする。 * * 2007.06.14 Ver.0.01 Genki edit. * refer to echo-server-1.c by * http://x68000.q-e-d.net/~68user/net/c-echo-1.html * * * Ver.0.01 とりあえずAction通りに動く。 * 結果によってsuccess or errorを返す。 ************************************************************************ * Origin * $Id: echo-server-1.c,v 1.6 2005/02/19 16:01:53 68user Exp $ * * echo サーバサンプル * * written by 68user http://X68000.q-e-d.net/~68user/ ************************************************************************/ #include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]){ int connected_socket, listening_socket; struct sockaddr_in sin; int len, ret; int sock_optval = 1; int port = ****; /* リスニングソケットを作成 */ listening_socket = socket(AF_INET, SOCK_STREAM, 0); if ( listening_socket == -1 ){ perror("socket"); exit(1); } /* ソケットオプション設定 */ if ( setsockopt(listening_socket, SOL_SOCKET, SO_REUSEADDR, &sock_optval, sizeof(sock_optval)) == -1 ){ perror("setsockopt"); exit(1); } /* アドレスファミリ・ポート番号・IPアドレス設定 */ sin.sin_family = AF_INET; sin.sin_port = htons(port); sin.sin_addr.s_addr = htonl(INADDR_ANY); /* ソケットにアドレス(=名前)を割り付ける */ if ( bind(listening_socket, (struct sockaddr *)&sin, sizeof(sin)) < 0 ){ perror("bind"); exit(1); } /* ポートを見張るよう、OS に命令する */ ret = listen(listening_socket, SOMAXCONN); if ( ret == -1 ){ perror("listen"); exit(1); } printf("ポート %d を見張ります。\n", port); struct hostent *peer_host; struct sockaddr_in peer_sin; len = sizeof(peer_sin); /* コネクション受け付け */ connected_socket = accept(listening_socket, (struct sockaddr *)&peer_sin, &len); if ( connected_socket == -1 ){ perror("accept"); exit(1); } /* ここから Genki wrote */ if(!system("kill `pidof mpg123`")){ write(connected_socket,"success",7); }else{ write(connected_socket,"error",5); } ret = close(connected_socket); return 0; }