質問: dbr.readLine(); } server.cでは char buf[256] と宣言してあります
回答: ネットワーク基本は送ったバイト数と受け取ったバイト数が一致する保証は無い、という点にに注意する必要があります。ですからサーバ側は一般的には受信ループで構成します。複数のコネクションに対応するなら listen select accept のループですね。 このサーバコードではソケットをどのように設定しているのかが判りませんが、nodelay になってるとサーバのループが先に終了してしまいますよ。 コードをざっと見るとPrintStreamを使っているのも気になります。そこで変換がかかっているかもしれません。怪しいと思ったら wireshark なんかでデータを確認するといいでしょう。あと、これはエコーバックの確認をしたいのかな?であればサーバ側を標準のエコーサーバにしてクライアント側の動作を単独で確認したりするといいでしょう。