netcat では、個々のポートだけでポート範囲をリッスンできないことに気付きました。クライアントとサーバー機能を備えた基本的な netcat のようなプログラムを C で作成しました。現在、複数のポートでリッスンする最善の方法を調査しています。
次のような使用法を目指します: program localhost 200 300 (200 はポートの始まりで、300 はポートの終了です)。
pthreads はこれを行うための最良の方法ですか? 各スレッドでバインド/リッスンし、接続が確立されたらそれらを元に戻しますか?
iret1 = pthread_create( &thread1, NULL, bind_function, (void*) somename);
pthread_join( thread1, NULL);
スレッド化は本当に新しい分野であり、より簡単な方法があるかどうか、または iret1 (戻り値) をさらに使用する方法があるかどうかはわかりません。誰でもこれに追加できますか?
Dolda2000 に関する注意事項:
私が遭遇したepollの使用例:
for (j = 1; j < argc; j++) {
fd = open(argv[j], O_RDONLY);
if (fd == -1)
errExit("open");
printf("Opened \"%s\" on fd %d\n", argv[j], fd);
ev.events = EPOLLIN; /* Only interested in input events */
ev.data.fd = fd;
if (epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &ev) == -1)
errExit("epoll_ctl");
}
私のバインディングコード:
if (bind(sockfd, (struct sockaddr *) &server_addr, server_len) < 0)
error("ERROR");
listen(sockfd,5);
newsockfd = accept(sockfd, (struct sockaddr *) &client_addr, &clilen);