UDPの双方向通信

***本記事にはプロモーションが含まれています。***

UDPで、データを待ち受けるときは、recvfromを使います。このとき、データがくるとパラメータに指定した送信先に、データを送ったアドレスが格納されています。そこに、sendtoを使ってデータを送り返すことで、はじめにデータを送ってきたプログラムと通信することができます。
あまり、UDPでの双方向通信についていいサンプルがないですし、参考にしたサイトがなくなってしまったのでこちらで説明すると、
rc = recvfrom(sd, bufptr, buflen, 0, (struct sockaddr *)&clientaddr, &clientaddrlen);
のclientaddrに送ってきたアドレスが入っているので、それを使ってsendtoすると応答を返せます。
rc = sendto(sd, bufptr, buflen, 0, (struct sockaddr *)&clientaddr, clientaddrlen);
http://publib.boulder.ibm.com/html/as400/v4r5/ic2962/info/RZAB6UDPSXMP.HTM
片方向通信の例はたくさんあるんですけどね。

コードのシンプルさ

***本記事にはプロモーションが含まれています。***

コードをシンプルに保つということは、余計な操作を削ぎ落とすことと同時に、1つの文章により多くの意味を持たせる、やらせるってことだと思う。要するにコピペはするなってことだけど。
また、大局的に見て必要な操作をまとめたり、戦略的な見方もある気がする。
それと、プログラマの力量によってもコードの見方が違ってくると思う。普通の文章と同じ側面がある。
細かなことまで書かないと、やってくれないとか、面倒なことでも文句も言わずやってくれるとか、コンピュータならではの側面もあるけれど。
人間にとってのわかりやすさってことかな。

一段落と思ったら

***本記事にはプロモーションが含まれています。***

パッチが取り込まれた模様。
でも、動かなかった…。
パッチを作って送っておいた。やれやれ。