プログラミング

新しいソースファイルを追加する毎に、プロジェクトファイル全体が100MBほど増加する。
最終的に数ギガにまで増大したが、以下解決策

まず、隠しファイルを表示する設定を行う。各自コントロールパネルから設定する。

次にプロジェクトフォルダ内の.vsファイルを探し、削除する。続きを読む
このエントリーをはてなブックマークに追加

WSAWaitForMultipleEvents等でうまく通知をキャッチできない場合、(他にWaitForSingleObject等)
イベント0が通知されているかもしれない

下記のコードはうまくいかない


下記のコードは微妙にうまくいく(FD_READの文には入らない)
続きを読む
このエントリーをはてなブックマークに追加

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

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


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

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

サーバー/クライアントともに使用可能である。
また、サーバー側で、接続してくるIPを指定せず(一般的なサーバー)に運用する場合、
res.ai_flags = AI_PASSIVE;
を指定しなければならない。

実例
res.ai_flags = AI_PASSIVE;
getaddrinfo(NULL, "80", &hints, &res);
このエントリーをはてなブックマークに追加

char *str; sizeof(str)
sizeofの場合、sizeofはstrの大きさではなく、strのポインタ変数の大きさを返す。
つまり、strの大きさがどれほどだろうと、strを指し示す"ポインタ"の大きさを返すのである。

char *str; strlen(str);
strlenの場合、strの大きさを表す。

まとめ
char *str = "hello"; sizeof(str)
の場合、strを指し示すchar型のポインタ1バイトを返す。

char *str = "hello"; strlen(str);
の場合、strの大きさ5バイトを返す。
このエントリーをはてなブックマークに追加

↑このページのトップヘ