void jack_rack_destroy (jack_rack_t * jack_rack) { process_quit (jack_rack->procinfo); // plugin_mgr is shared and global now, so we do not destroy it with each instance // plugin_mgr_destroy (jack_rack->plugin_mgr); process_info_destroy (jack_rack->procinfo); g_slist_free (jack_rack->saved_plugins); g_free (jack_rack); }
int main(int argc, const char *argv[]) { int sockfd; int acceptfd; struct sockaddr_in serveraddr, clientaddr; char buf[N] = {}; if(argc < 3) { fprintf(stderr, "Usage:%s serverip port.", argv[0]); return -1; } if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { err_log("fail to socket"); } printf("sockfd = %d\n", sockfd); serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = inet_addr(argv[1]); serveraddr.sin_port = htons(atoi(argv[2])); if(bind(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0) { err_log("fail to bind"); } if(listen(sockfd, 15) < 0) { err_log("fail to listen"); } socklen_t addrlen = sizeof(struct sockaddr); while(1) { if((acceptfd = accept(sockfd, (struct sockaddr *)&clientaddr,&addrlen)) < 0) { err_log("fail to accept"); } printf("acceptfd = %d\n", acceptfd); recv(acceptfd, buf, N, 0); switch(buf[0]) { case 'L': process_list(acceptfd); break; case 'P': process_upload(acceptfd, buf+2); break; case 'G': // G filename process_download(acceptfd,buf+2); break; case 'Q': process_quit(); break; default: printf("Error cmd.\n"); } } close(acceptfd); close(sockfd); return 0; }