※ここに書かれている内容は、私の経験則に基づいている内容であり、確証があるわけではない。

connect後にすぐsendを行うと、データが送信されないことがある。
そういうときは、connectの後に、0.3秒程ウェイトを作り、sendするとうまくいく。


経験上、sendが成功したりしなかったりするプログラムに対して有効である。

TCPでは、相手がデータを受け取れなかったとき、そのパケットを再送する。
このとき、他に送信したいデータがあれば、それを再送予定のパケットの最後尾に付加して送信する。
そのため、パケットに複数の境界があるデータを処理できないrecv関数を使用している場合、受信側でパケットを取りこぼしてしまうのである。