ネットワークプログラミング相談室 Port11
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん ◆TCP/IPmFAM
NGNGProgramming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
過去スレ:
Port1 http://pc.2ch.net/tech/kako/970/970344582.html
Port2 http://pc.2ch.net/tech/kako/1006/10062/1006258198.html
Port3 http://pc3.2ch.net/tech/kako/1023/10233/1023359282.html
Port4 http://pc3.2ch.net/tech/kako/1034/10342/1034236536.html
Port5 http://pc2.2ch.net/tech/kako/1040/10402/1040220302.html
Port6 http://pc5.2ch.net/tech/kako/1052/10521/1052106444.html
Port7 http://pc5.2ch.net/test/read.cgi/tech/1063035045/
Port8 http://pc5.2ch.net/test/read.cgi/tech/1073560271/
Port9 http://pc5.2ch.net/test/read.cgi/tech/1080658835/
Port10 http://pc5.2ch.net/test/read.cgi/tech/1090385857/
関連リンクは>>2-10辺り
足りなかったら適当に付け足してね
0083デフォルトの名無しさん
NGNGみんな無視してるのに今頃出てきて何言ってんだ……。
0084デフォルトの名無しさん
NGNGヒキコモリ>>83的には半日もあれば既に誰もがスレチェックずみなのかも知れんが。
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNGストレージはデータの保存要求を受け付けるとすぐさま
ネットワーク上の別のストレージへデータを転送する。
この要求を受け付けた別のストレージは、すぐさま
ネットワーク上の別のストレージへデータを転送する。
これを繰り返すことでデータはストレージではなくネット上に配備されることになる。
即ち、受け付けるデータ分のメモリーがあれば、無限の仮想ストレージを構築できる。
偉大なるネットワークに感謝。
0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNGソケット通信プロセスを作っています
サーバ、クライアント両方からsend()すると
両者の送信タイミングはかなりずれてるのに
遅れてsend()したソケットは
自分が送信したあとでないと受信しない現象が発生します
どうしてでしょうか?
よきアドバイスをよろしくお願いします。
0090デフォルトの名無しさん
NGNGストリーム型でかつ即座に送信すべきデータが流れるソケットならば、
ソケットトオプションでTCP_NODELAY あたりを指定してみては?
0091デフォルトの名無しさん
NGNG和書でこれに代わる様なものはないのでしょうか?
0092デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1089492835/
0093デフォルトの名無しさん
NGNG1対1の通信で、サーバがメッセージを投げそれの返信を
クライアントが返す通信を10msec間隔で繰り返しています
このときランダムに(強いて言えば3万トランザクションに1回)、
どちらかで200強msecの送信か受信遅延が発生しているようです
どうしてでしょうか?
心当たりのある方、お助けください。
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGソケット通信プロセスを作っています
今度はサーバからsend()でメッセージを送信し
クライアントはそれに対してsend()で返信します
これを10msec間隔でおこなっていますが
30000回に1回くらいのわりあいで
どちらかの送信または受信遅延が発生します
どうしてでしょうか?
よきアドバイスをよろしくお願いします
0096デフォルトの名無しさん
NGNGそんなもんなんですかね〜
あ〜何とかなりませんかね〜
どうも受信遅延が怪しいのですが・・・
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNGプロトコル設計の段階で道を誤っていると思われ。
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNG今時何故…
こんなの考える気力も起きない…
0101デフォルトの名無しさん
NGNGリアルタイム制御系かあるいは音声かVideoを載せてるか、どっちかか?
10msec間隔で送受信するような処理をMFCで実装しようとしてる時点でDQN決定!
遅延が許容できないのならwin32のWSAEventSelectでも使え、
ってwinsockの専門書に英語で書いてあるぞ。
0102デフォルトの名無しさん
NGNGMFC/非MFCを問わず、Winsock2 のメッセージベースの非同期ソケットはメッセージポンプが
何らかの事情で滞ると、ネットワークの状況に関わらず遅延が生じてしまう。
専任のスレッドで select で待つか、I/O コンプリーションポート(ReadFileでコンプリーション
ルーチンを指定する)のが吉。
0104デフォルトの名無しさん
NGNG難しいっていうか面倒なだけのような。トライアンドエラーとかしたくないコードになるし・・・
漏れは結局同期IOでプロトタイピングしてデバグ済ませて状態遷移を整理したうえで、
あらためてIOコンプリーションポートで実装しなおした。
IO Queueing とか企むとプログラムに不要な複雑さが増して死ねそうだったので、
結局パフォーマンスは出ていない模様(w
ところで .NET Framework では、メッセージベースじゃなくてI/Oコンプリーションポートの
方が非同期IOの基本になってるけど、皆これ使うかなぁ・・・
0105デフォルトの名無しさん
NGNGつまり全部送られてきていないみたいなんです。
どういう原因が考えられますでしょうか。
0106デフォルトの名無しさん
NGNGまだデータが残っている。
0107デフォルトの名無しさん
NGNGそれは正常な動作です。
ソケットプログラミングの入門書でも読みましょう
0108デフォルトの名無しさん
NGNGどこに?何の?
0109デフォルトの名無しさん
NGNGいちおう、受信バッファのサイズは十分とっているんですが。
0110デフォルトの名無しさん
NGNGだから>>1-のリンク見ろよ
0111デフォルトの名無しさん
NGNGあたりまえだ
0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNGどの書き込みの人がバカにしているの?
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG今どきIPv6経由しないネットがあると思うか?
0116デフォルトの名無しさん
NGNG第一IPv6と>>105は全く関係ないぞ。
0118デフォルトの名無しさん
NGNGどうやって?
0119デフォルトの名無しさん
NGNGというか「FAQ読め」と思う。
ネットワークの世界では自分の都合だけでAPIを決められないから、
>>109なんてことは当たり前にある。初心者がどれだけ不合理に思っても。
それを理解するのがネットワークプログラミングの始まり。
0120デフォルトの名無しさん
NGNGrecvの返値が0という方法以外ですべてのデータが送られたことを確認するには
どうしたらいいのでしょうか。
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG何か良い関数があればと思ったのですが・・・。
ともかくありがとうございました。
0124デフォルトの名無しさん
NGNG実際のファイルサイズよりも、かなり少ないサイズが表示されてしまいます。
正しいファイルサイズを表示させるにはどの様にすればよいのでしょうか?
CInternetSession IntSession("Test");
CFtpConnection *pFtpCon;
CInternetFile *pFile;
pFtpCon = IntSession.GetFtpConnection("ServerName", "UserName", "Password");
pFtpCon->SetCurrentDirectory("CurrentDirectory");
pFile = pFtpCon->OpenFile("FileName", GENERIC_READ);
TRACE("size = %u\n", pFile->GetLength());
pFile->Close();
if(pFile != NULL){ delete pFile; }
IntSession.Close();
0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNGってどのくらいよ?
0127124
NGNGえ〜と、例えば1MB超えるようなデータでも 16824バイトと表示されてしまいます・・
というより、16824バイト以上のファイルは必ず、16824バイトになってしまいます。
FFFTPで見てみると、正しいサイズが表示されていますので、プログラムの問題だと思うのですが・・
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNG0130124
NGNG自分は皆が呆れるほど、何か根本的な部分で間違いを犯しているのでしょうか?
本当にわからないので、何方かご教示して頂けるとありがたいのですが・・
0131デフォルトの名無しさん
NGNG1MB分受信できているの?
0133131
NGNG0134デフォルトの名無しさん
NGNGと書いてあるけど、どうなん?
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNG0137124
NGNGOpenFile()の時点で受信しているのではないのですか?
0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNGMSDN> CInternetFile::Read を使用します。
0140124
NGNGすみません・・ 上げて頂いたお陰でレスが付いた事は感謝しています。
>>134
Read(), Write(), Close(), FindFile() 以外呼べないんですか・・・
ではファイルサイズはどうやって取得するのでしょうか?
ちょっと、またテストプログラム書いてから来ます。
0141デフォルトの名無しさん
NGNGまあこれを見る限りではファイルサイズを得るには>>124でいいみたいだけど(%uを使っているのは別として)
0142デフォルトの名無しさん
NGNGls -lの結果がCFtpConnectionでパーズ出来ない形式なんだろう。
別のサーバで試してみたら?
いずれにせよ、ftpでファイルサイズが必ず取得できると
仮定したプログラムはまずい。サーバ固定でないのなら。
0143124
NGNGなるほど! 勉強になりました!
要するに、FTPではサーバによってはファイルサイズが取得出来ないという事ですね。
ファイルサイズが取得出来ないので、カッコ悪いですが、こんな感じにしました。
char tmp[128];
DWORD size;
vector<char> buf;
while(size = pFile->Read(tmp, sizeof(tmp))){
for(int i = 0; i < size; ++i){ buf.push_back(tmp[i]); }
}
0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNGスマートな方法ありますか?
0146デフォルトの名無しさん
NGNGこんなのは?
0147デフォルトの名無しさん
NGNGまた荒しが粘着しているみたいなんで放置。
0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNGネットワークプログラミングっていうのは、一番上の層での話ですか?
業務
〜〜〜〜〜
基盤
〜〜〜〜〜
ネットワーク
って感じで層構造になっているじゃないですか?
それの一番上の層での話ですか?
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNG情報システム板で聞いたら、ネットワークエンジニアはOSIの下層をやるから
プログラミングなんて関係ない、と聞いたのですが・・・。
0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNGくだらん事に頭使うヒマがあったら仕事しろ
0154デフォルトの名無しさん
NGNGはい。ネットワークエンジニアのことです。
初心者ですまそ。
0155デフォルトの名無しさん
NGNGネットワークプログラミングしてるって言えなくも無い
0156デフォルトの名無しさん
NGNG業務系・基盤系・ネットワーク系のどれが自分にあってるのか、模索してます。
0157デフォルトの名無しさん
NGNG大きくない会社だとなんでもやらされるし
0158デフォルトの名無しさん
NGNGなんにしろ、プログラマー板でやれよ
0159デフォルトの名無しさん
NGNG下の層だからプログラミング関係ないという事はないだろ。
スイッチングHUBだってソフトウェアで動いているんだから。
機械のお守りするだけの人ならプログラミングは必要ないけどね。
0160デフォルトの名無しさん
NGNG一番上は political or religious layer だろ。
0161デフォルトの名無しさん
NGNGこの馬鹿野郎が
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNGでは、ネットワークエンジニアだったら、プログラミングはあまり関係ないということですか?
0164デフォルトの名無しさん
NGNGhttp://science3.2ch.net/infosys/
0165デフォルトの名無しさん
NGNG1. ソフト(プログラム)を作る人
2. ハードを作る人
3. 1.2.を設置・運用する人
に分類されていてプログラミングをするのは1.の人だけ。
だから仕事によってはプログラミングする。
0166デフォルトの名無しさん
NGNGありがとうございます。ネットワークの設計・構築・運用をやってみたいと思っています。
ということは3.ですね。
みなさん、お邪魔しました。どうも!
0167デフォルトの名無しさん
NGNGで、3.がNEか。
0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNGあくまでも、ネットワーク関連に携わる人の種類、ってことだろ。
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNGサーバ管理者であって、ネットワークエンジニアじゃないだろ。
0172デフォルトの名無しさん
NGNGつーかスレ違いsage…
0173デフォルトの名無しさん
NGNG>>166は苦手なんだな
0174デフォルトの名無しさん
NGNG再び参上。
そうなんです。苦手というか興味がないというか。
0175デフォルトの名無しさん
NGNGどうでもいいから、ここから立ち去れ。
0176デフォルトの名無しさん
NGNGウワアア━━━━━(`Д')━━━━━ ン ...
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNGソフト書くほうがよっぽどいいと思うが。
0179デフォルトの名無しさん
NGNG残業もほとんど無いし。
0180デフォルトの名無しさん
NGNG0181デフォルトの名無しさん
NGNGSNMPマネージャのバグで基幹系ルータの設定がぐちゃになって、
ルータメーカのエンジニアとマシン室で一夜を明かしたり。
0182デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています