をmutlithread
介して通信するクライアントサーバーアプリケーションがありますsockets
。この構造で新しいスレッドを作成します。
pthread_t thread;
pthread_create(&thread, NULL, c->sendMessage, (void *) fd);
ここfd
で、 は接続の ID でありc->sendMessage
、新しいスレッドが作成された後に呼び出され、このスレッドを処理する関数です。この関数内で、メッセージを送信する必要がありますsend(int sockfd, const void *buf, size_t len, int flags);
だから私はsockfd
このようになります:
void * Client::sendMessage(void *threadid) {
int sockfd = (int) threadid;
// some more code here and in the end I send the data via send(int sockfd, const void *buf, size_t len, int flags)
}
私はフラグを付けてコンパイルしますが-pedantic
、ほとんどのコンパイラ (私のものを含む) はコンパイル中に警告やエラーをスローしません。しかし、コンパイル中にvoid *
toからのこの再入力int
は安全ではなく、loose of precision
. これは良い解決策ではなく、よりクリーンに行う必要があることを理解しています。しかし、私は方法を見つけることができません。ponter を int に再入力し、コンパイル中の警告を回避する方法など、クリーンなプラクティスを誰かにアドバイスしてもらえますか?