A mere hateblo

単なるはてブロです。

programming

複数のクライアントから接続を受ける際のselect(2)の動作を確認した

ソケットを使ったサーバー・クライアントを実装するとして、サーバーに複数のクライアントから接続を求められた場合、selectがどのような動作をするのか確かめたくなった。まずはサーバーから: #include <fcntl.h> #include <netinet/in.h> #include <signal.h> #include <stdio.h> #include <sys/select.h> #include <sys/socket.h></sys/socket.h></sys/select.h></stdio.h></signal.h></netinet/in.h></fcntl.h>…

C++の参照の使い方を間違えた

C++の参照を「ポインタと見た目が違うだけで似たようなもの」などと覚えたせいでバグを作ってしまった。なんだかくやしいので、未来の自分に対して書き留めておく。 例えばポインタを使った例として、こう書いて: #include <iostream> int main() { int a = 1; int b =</iostream>…

関数(メソッド)の再定義と多重定義

昨日ごりごりRuby書いているときに他の言語の感覚のままでハマったこと - 日々の御伽噺を読んで、C++ではどうかと思い確認した。 int foo(int a, int b) { return 1; } int foo(int a, int b, int c = 0) { return 0; } int main() { return foo(1, 2); }% g…

ケアレスミス

どうしても直せない不具合があった。ifの条件が真ではないことが明らかなのに真とみなされてしまう。かなり頭を抱えたが、よくよくソースを見たらなんてことはない(以下は適当な再現コード)。 bool ret = true; if (!ret); // ← ここに謎のセミコロンがある …