int main(void) { struct tcp_client *c; struct tcp_conf conf = { .ipproto = AF_INET, .port = 1234, .client = { .inet_addr = { inet_addr("127.0.0.1") }, }, }; struct nft_sync_hdr *hdr; struct msg_buff *msgb; char buf[1024]; fd_set fds; msgb = msgb_alloc(NFTS_MAX_REQUEST); if (msgb == NULL) { perror("msgb_alloc"); exit(EXIT_FAILURE); } hdr = msgb_put(msgb, sizeof(struct nft_sync_hdr) + strlen("fetch")); hdr->len = htonl(sizeof(struct nft_sync_hdr) + strlen("fetch")); memcpy(hdr->data, "fetch", strlen("fetch")); c = tcp_client_create(&conf); if (c == NULL) { fprintf(stderr, "cannot initialize TCP client\n"); exit(EXIT_FAILURE); } FD_ZERO(&fds); FD_SET(tcp_client_get_fd(c), &fds); /* Wait for connection ... */ select(tcp_client_get_fd(c) + 1, NULL, &fds, NULL, NULL); if (tcp_client_send(c, msgb_data(msgb), msgb_len(msgb)) < 0) { perror("cannot send to socket"); exit(EXIT_FAILURE); } FD_ZERO(&fds); FD_SET(tcp_client_get_fd(c), &fds); /* Wait to receive data after sending request ... */ select(tcp_client_get_fd(c) + 1, &fds, NULL, NULL, NULL); if (tcp_client_recv(c, buf, sizeof(buf)) < 0) { perror("cannot send to socket"); exit(EXIT_FAILURE); } printf("[TEST OK] Received: %s\n", buf + sizeof(struct nft_sync_hdr)); tcp_client_destroy(c); }
int main(int argc, char **argv) { pthread_t tid; install_signals(); client = tcp_client_create(10000); if (NULL == client) { log_error("tcp_client_create failed."); return 0; } pthread_create(&tid, NULL, thr_fn, NULL); tcp_client_run(client); tcp_client_destroy(client); return 1; }