- 1 名前:echoちゃん [2008/02/29(金) 21:19:37 ]
- 主にソケットに関しての質疑応答スレッドです。
Programming UNIX Socket FAQ (日本語訳) www.kt.rim.or.jp/~ksk/sock-faq/indexj.html Winsock Programmer's FAQ (日本語訳) www.kt.rim.or.jp/~ksk/wskfaq-ja/ 関連リンクは>>2-10辺り 足りなかったら適当に付け足してね 前スレ ネットワークプログラミング相談室 Port20 pc11.2ch.net/test/read.cgi/tech/1186418855/ 関連スレ Java ネットワークプログラミング 【教えて!】 pc11.2ch.net/test/read.cgi/tech/1086238859/
- 27 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:53:28 ]
- >>26
あー、ユーザーランドインタフェイス内部でのつもりだった。 もちろん、それが特に書かれてるのが TCP の RFC なのはわかってるけど >>20 に環境が書かれてないんだもん。
- 28 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:47:33 ]
- >>27
お前、シッタカはタイガイニシル
- 29 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:33:03 ]
- SMTPが到達を保証できない理由を
分かり易く解説したサイトってない?
- 30 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:46:35 ]
- >>29
・SMTPを使ったメールはインターネット上のあらゆるサーバを経由して転送される ・あらゆるサーバとは、自分のあずかり知らないサーバを経由する可能性がある ・あずかり知らないサーバを経由するということは、そのあずかり知らないサーバの管理者 がどうとでもすることができる 他にもあるが、これだけでも分かったつもりにはなれるだろ。
- 31 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:08:18 ]
- いや、そういうハナシじゃなくて
電子商取引推進協議会(ECOM)のガイドラインで プロトコル上の欠点を示唆してるようだが、詳しい理由を解説してないから、 そこを突っ込んでいる奴を。 www.ecom.jp/qecom/seika/
- 32 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:13:42 ]
- 問題の文書はコレで、
第5章 通信基盤ガイドライン www.ecom.jp/qecom/seika/naiyou/p2_tradewg/new5.pdf >SMTP では、メールが相手に確実に届く保証がないこ >とやデータの順次性を必ずしも保てないといったデータ >送受信の確実性の問題がある。
- 33 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:16:33 ]
- 補足:
多分ここら辺りにポイントがあると予想する。 >なお、データの送受信の確実性の確保に関しては、 >通信レベルだけの対応では不十分であり、 >アプリケーションレベルでの対応が必要である。
- 34 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:26:35 ]
- 確実の定義次第じゃん・・・
- 35 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:35:22 ]
- そういうミもフタもないハナシなのかなぁ
- 36 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:38:38 ]
- >>32
当たり前のことしか書いてない。まぁメールなんて使うなってこった。
- 37 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:46:10 ]
- ちなみにいまのインターネットだって、送信したデータが*確実に*相手に
届くことなんて保証してないぞ。TCPは可能な限りの努力をするが、 届かないときはどうしようもない。 *確実*だけのキーワードだと、ダウンタイムとか冗長性とか、 障害耐性とか、コアとなるハブの存在だとか、クラスター性だとか ・・・・。
- 38 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 00:26:14 ]
- TCPは、届かないなら届かなかった事が判るでしょ
- 39 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 00:35:07 ]
- 企業や学校はメールゲートウェイとかあって
メールサーバー本体と直接通信してなかったりするから TCPソケットでエラーが出なくても届いてない可能性があるかと。 直通のftpメールなら確実だと思うけど。
- 40 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 12:36:31 ]
- つうかレイヤーを切り分けて考えろよ
- 41 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 21:52:33 ]
- 相手のメールサーバから「受信した」とackが来ても、
その直後にディスクがクラッシュするかもしれないからな 確実とはいえない
- 42 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:06:50 ]
- なにいってんだこいつ
- 43 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 04:49:20 ]
- >31が「エスパーキボンヌ」にしか見えないのは気のせい?
SMTPプロトコルの欠点だけ論うなら、 bounceが存在する ->エラー通知が10年後に届いても文句言えない ->確実性✕ なんて部分があるな。
- 44 名前:デフォルトの名無しさん [2008/03/19(水) 23:41:34 ]
- サーバ側KEEP-ALIVEの一回の接続で処理出来るリクエスト数が30で
一つのページに使われているインラインコンテンツが30以上あった場合 これらをダウンロードするためには もう一回接続する必要がありますか?
- 45 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 23:54:54 ]
- そりゃそうだろう
- 46 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:06:10 ]
- どんなネットワークプログラム作ったらいいかわかりません
どうしたらいいですか?
- 47 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:24:16 ]
- >>46
特に何か作る必要がないのなら、別に何も作らなくていいのでは?
- 48 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:16:48 ]
- >>46
文字列を入力したらもう一方の端末でその文字列を表示するというのをソケットを使って作成しましょう
- 49 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 09:51:42 ]
- 組み込みlinux機器向けにC言語ベースの簡易httpクライアントを作成しています。
ヘッダの読み取りに、1行ずつストリームから取得するという処理を 書いているのですが、1文字ずつrecvして、\r→\nのパターンが 来るまで繰り返す、という方法はありなんでしょうか? 他に何か良い方法はあるでしょうか。
- 50 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 10:19:15 ]
- ありだと思うけど、\r\nを返さないサーバもあるから気を付けてね。
- 51 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 10:23:39 ]
- 一応ソースコードです。改行制限キツイですね。
// 1行読み取り,改行を含む長さを返す,バッファに入りきらない場合はnul終端文字列の長さ int readline(int sd, char *buf, int bufsize) { int rlen = 0, wlen = 0, cr = 0; char ch; for (;;) { int r = recv( sd, &ch, 1, 0 ) ; if (r < 0) { fprintf(stderr,"readline:error r < 0\n"); return r; } else if(!r) { fprintf(stderr,"readline:warning !r\n"); break ; } if (ch == '\n') { if (!cr) fprintf(stderr,"readline:warning !cr\n"); if (rlen < bufsize) buf[wlen++] = ch; rlen++; break; } else { cr = (ch == '\r') ? 1 : 0; if (rlen < bufsize) buf[wlen++] = ch; rlen++; } } if (wlen>=bufsize) wlen--; // nul終端文字列になるように調節 buf[wlen] = 0; return wlen; }
- 52 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 10:33:06 ]
- >>50
ありがとうございます。 自分でバッファリングしてくこと考えたら 頭痛くなってきたので。 \rはオプション扱いに致します。
- 53 名前:デフォルトの名無しさん [2008/03/27(木) 12:31:48 ]
- 初心者向けの本は何を買ったらいいんですか?
- 54 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 16:03:57 ]
- NAT越えって、まだ個人がおいそれと実現できる領域じゃないのかな?
ゲーム作ってて、NAT越えできたらなぁとよく思うんだけど・・・
- 55 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:09:58 ]
- >>54
TCPで接続張ってしまえば、自由に通信できるよ。最初の 接続元はNATの内側から出ないといけないけど。 ゲームなら別にそれでもいいでしょ。
- 56 名前:デフォルトの名無しさん [2008/03/27(木) 22:46:39 ]
- >>1
まだftpか。httpまであと何年かかるかな。
- 57 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 08:56:49 ]
- >>55
>最初の接続元はNATの内側から出ないといけないけど。 意味ねーじゃんw
- 58 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 10:30:09 ]
- >>55,57
質問者の54です。ちょっと意味がわからないのですが、NAT越えとは以下のことができる技術という認識であってるでしょうか? AとBは、両方ともルータの中の人間。直接やりとりは普通は無理。 Cというサーバーに、AもBも通信を行なう Cが、AとBをうまく結びつける AとBが直接やりとりできるようになる(Cを経由しない!!) ←NAT越え! これができると、マッチングサーバーCはほとんど負荷無く運営できて良いのですが。 NintendoDSのWIFI対戦も、この仕組みだと聞いております。 このCサーバーを構築する方法は、個人で気軽に手の届く技術でしょうか? (どうやら、それをツールとして売り出している企業はあるようなのですが)
- 59 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 10:53:25 ]
- UDP Hole Punching ってのもあったような
- 60 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 11:05:36 ]
- UDP Hole Punchingは「あまりセキュリティーに力を入れていないルータ」しか乗り越えられないようなのと
具体的ソースを提示しているサイトが見当たらないことが TCPをUDPに切り替える足かせになっているような気がします。 概念はわかりやすいものなので、実験環境があればテストは簡単そうです。 この土日にでもテストしてみたいと思います。 他にも何か情報があれば嬉しいです。 NAT越えは面白い分野ですが、ム板では盛り上がっていないようなので…
- 61 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 11:16:39 ]
- 初心者も簡単にNAPT設定ができれば、たいした問題にはならんのに
なんで用語とか各メーカーばらばらなんだか・・
- 62 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 11:35:02 ]
- 今となってはUPnPでよくね?
UPnP対応ルータじゃないルータって、いまどき売ってるかね?
- 63 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 13:34:36 ]
- >>62
だね。きちんと整備されたライブラリ使えば、socketでlistenするのと、 UPnPでポート割り当てるの同感覚。特定のポート番号使えるのが、NAT内の1台だけだって制限があるけど。
- 64 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 14:26:22 ]
- 54です
恥ずかしながら、初めてUPnPというものを知りました。 これは素晴らしい技術ですね。 早速サンプルソースも手に入れましたので、実験してみたいと思います。 ありがとうございました。 >>63 もしよろしければ、きちんと整備されたライブラリ〜というものの例をいただけるとありがたいです。 とりあえず ttp://www.bosuke.mine.nu/neta/upnp.shtml ここを参考に組んでみようと思います。 余談ですが、今たまたまGoogleで色々調べていたら、ここの前スレで同じサイトを参考に組もうとしている人を発見しましたw
- 65 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 15:30:45 ]
- UPnPもSTUNもルータに激しく依存するから結局繋がらない場合は繋がらないけどな。
UPnPも最近になってやっと危険性が認知されてデフォでoffになったりしてるし。 jvn.jp/cert/JVNVU%23347812/ internet.watch.impress.co.jp/ cda/news/2008/01/17/18149.html
- 66 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 16:47:43 ]
- Flashの通信機能を遮断する方法がわからないんだよなー
- 67 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 18:25:28 ]
- >>60
RFC3489の"5. NAT Variations"あたりを見てみたら? UDP Hole PunchingできるのはFull Coneだけでしょう. たしかI-Dのどれかに,どの機種がFull Coneかのリストが載っていたような >>65 TURNを作れば? :-)
- 68 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 22:28:43 ]
- NGN普及して、IPv6デフォルトになればNAPTなぞ過去の技術になる。
- 69 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 07:01:44 ]
- >>68
NAPTは遺物となってもFWは残る
- 70 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 04:51:24 ]
- かなり初歩的なことをお聞きしますが、プロキシサーバーというものは送られてきたメッセージを直接ホストに送信するだけでよいのでしょうか?
- 71 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 10:23:37 ]
- 駄目
- 72 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 12:14:16 ]
- >>70
proxy serverといってもいろんな種類があるが何のプロトコルのproxy?
- 73 名前:70 [2008/03/31(月) 13:11:11 ]
- >>72
HTTPプロトコルです
- 74 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 13:22:48 ]
- >>73
代表的なのは、 ・ メソッドに書かれてる URL から正しくホストに接続する ・ www.example.com/path1/path2.html みたいな URL をホスト接続時は /path1/path2.html に変換する ・ プロキシ特有の環境変数を付加する (必要な場合) ・ CONNECT メソッドを正しく解釈する (CONNECT 以降はそのままデータの送受信を行う) 辺りかな。 RFC などのドキュメントを見るのが一番手っ取り早いとは思うが。
- 75 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 13:27:01 ]
- >>73
http proxyはちゃんと作るとかなり複雑だが、少くともリクエスト内容は書き換えなきゃいけないだろ。 あとは、HTTP/1.0/1.1の場合分けとかKeepAliveとかpipelineとかchunkとか100 Continueとか、 真面目にやりだすと結構大変。 とりあえずRFC2616嫁
- 76 名前:70 mailto:sage [2008/03/31(月) 13:35:09 ]
- >>74-75
レスありがとうございます RFCのドキュメントを読んでみることにします
- 77 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 13:37:56 ]
- まぁ、読んでもわかんないと思うけどね・・・
- 78 名前:デフォルトの名無しさん [2008/03/31(月) 13:39:24 ]
- >>77
そないなことあらへんで。
- 79 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 13:44:17 ]
- 内容を理解できないということじゃなくて、proxy serverの構成要件とは何かがわかんないだろうって意味
- 80 名前:デフォルトの名無しさん [2008/03/31(月) 13:47:37 ]
- >>79
あ、なるほど。
- 81 名前:fxで裁判中。教えて [2008/04/03(木) 08:29:02 ]
- 外国為替証拠金取引会社のアトランティックトレードと裁判になりました。
裁判の内容をここに記してみました システム障害等でくわしいかた、是非とも情報をお待ちしております。 よろしくお願いします。 members3.jcom.home.ne.jp/chaochu/
- 82 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:49:43 ]
- >>68
そのNGNがv6マルチプレフィクス問題で、やっぱNAPT使うか?とも言われている件。
- 83 名前:デフォルトの名無しさん [2008/04/09(水) 11:10:34 ]
- プロトコル定義するときに 「最初のグリーティングはクライアントから出させる事」 みたいな
一般論的なセキュリティ上の推奨をどこかで見たようながあったような気がするんだが、 これって単に攻撃のための情報を減らす目的でしたかね? 何かそういった鉄則集みたいなのを 10 年くらい前にどこかで見たような記憶があるんですが どこかご存知ないですか?
- 84 名前:デフォルトの名無しさん [2008/04/12(土) 11:31:55 ]
- 簡単なオンラインゲーム(MMO)を作ろうと思うのですが、
無料のデータベースであるMySQLかSQLServer2005Expressを使おうと思ってますが おすすめのものとその理由など教えていただきたいです。
- 85 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 11:35:23 ]
- 日本語でおk
- 86 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 12:00:58 ]
- >>84
スレ違い以前に板違いだぞ、DB板かゲ製行ってくると良い
- 87 名前:デフォルトの名無しさん [2008/04/12(土) 13:32:10 ]
- >>86
いってきます
- 88 名前:デフォルトの名無しさん [2008/04/12(土) 17:05:47 ]
- Winsockを使って相手サーバがKEEP-ALIVEに対応しているか確かめる方法はありますか?
- 89 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 17:07:23 ]
- 投げてみて、その反応をさぐるしかない。
- 90 名前:デフォルトの名無しさん [2008/04/12(土) 18:39:30 ]
- >>89
投げてみました。 ApacheではKEEPALIVEがOffにされていた場合 Connectionがcloseとなっています。 closeであるかないかで判定しようと思うのですが、 どうでしょうか?
- 91 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:41:43 ]
- HTTP かよ。
Connection: close ならエンティティボディ送信後に切断だよ。 RFC 嫁。persistent connection でググレ
- 92 名前:デフォルトの名無しさん [2008/04/12(土) 21:35:08 ]
- Connection(小文字)がCONNECTION(大文字)で返ってくるサーバはありますか?
- 93 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:40:22 ]
- いいからRFC読めよ
- 94 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:44:06 ]
- >>93
ウラル貼ってくれ
- 95 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:54:17 ]
- >>93
URL貼って下さい
- 96 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:56:35 ]
- www.google.co.jp/search?q=RFC+http
- 97 名前:デフォルトの名無しさん [2008/04/12(土) 21:59:34 ]
- >>96
いや、 RFCの何番?
- 98 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 22:03:28 ]
- だからみりゃわかるだろ低脳。
そもそも>>1に「関連リンク云々」書いてあること読めないか?
- 99 名前:デフォルトの名無しさん [2008/04/12(土) 22:16:56 ]
- >>98
いや、 だからHTTPヘッダが大文字で返ってくるサーバとかあるのか、 って聞いてんだよ
- 100 名前:デフォルトの名無しさん [2008/04/12(土) 22:21:10 ]
- あるだろうなぁ。
- 101 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 22:26:46 ]
- >>100
ありがとうございます。
- 102 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 22:57:12 ]
- 規定してなきゃ存在するとみなすのが当然じゃん。
その規定が書いてあるのがRFCなんだけど。
- 103 名前:デフォルトの名無しさん [2008/04/12(土) 23:05:57 ]
- >>102
素で意味がわからん。
- 104 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 23:30:50 ]
- >>102
規定してあるよ。おまいがよく読めw
- 105 名前:デフォルトの名無しさん [2008/04/13(日) 00:09:31 ]
- 何もないと思うが。
- 106 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 00:49:58 ]
- >>105
ttp://www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec4.2 4.2 メッセージヘッダ 一般ヘッダ (section 4.5)、リクエストヘッダ (section 5.3)、レスポンスヘッダ (section 6.2)、エンティティヘッダ (section 7.1) 各フィールドを含む HTTP ヘッダフィールドは、RFC 822 [9] の Section 3.1 で与えられているものと同じである共通のフォーマットに従う。 それぞれのヘッダフィールドは、名前、その後にコロン(":")、そしてフィールド値から成る。 フィールド名は、大文字・小文字を区別しない。 「大文字と小文字を区別しない」
- 107 名前:デフォルトの名無しさん [2008/04/13(日) 00:54:11 ]
- >>106
そりゃRFCだろ。
- 108 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 01:00:51 ]
- 変な流れになってるなぁ。
- 109 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 09:39:25 ]
- どうみても同一人物だろ・・・
言い返されたからってムキになるなよ(;´Д`)
- 110 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 10:10:40 ]
- 迷子のキムチさん
出て行ってください
- 111 名前:デフォルトの名無しさん [2008/04/19(土) 21:15:07 ]
- Keep-alive使ったサンプルコードってあります?
Winsockで
- 112 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 21:46:27 ]
- 一週間ぶりですね
- 113 名前:デフォルトの名無しさん [2008/04/19(土) 22:11:14 ]
- Linux用に作成したソケット通信アプリのテストにtcpdumpを使いたいのですが
アプリが送受信しているデータの表示方法がなかなか分かりません。 tcpdump -s 1600 -X tcp port 1024 と打った上で、アプリに送受信させるとデータが含まれたパケットの中身が バイナリで表示されますが、アプリが送受信しているデータだけ表示させる 方法はないでしょうか? どなたか教えてください。よろしくおねがいいたします。
- 114 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 23:17:37 ]
- >>113
つwireshark
- 115 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 23:52:33 ]
- X環境入れてないのです(;_;)
- 116 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 03:30:50 ]
- >>112
……(´・ω・`)
- 117 名前:デフォルトの名無しさん [2008/04/22(火) 14:58:59 ]
- 最近ネットプログラミングはじめたのですが、
よくサーバはクライアントのパケットを信用してはいけないと書かれていて、 逆にクライアントはサーバのパケットを信用して良いのでしょうか?
- 118 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 15:21:33 ]
- クライアントが、信用できないサーバ (不特定多数のサーバ) と通信する可能性があるなら、信用してはいけない。
信用できるサーバとしか通信しないなら信用してもいいかもしれないが、 信用できないという前提で組む方が、サーバに何かバグがあったり、 通信の改ざんを受けたり、なりすましサーバに当たったりしたときに、安全でいいと思うよ。
- 119 名前:デフォルトの名無しさん [2008/04/22(火) 17:24:53 ]
- >>118
なるほど、ありがとうございます
- 120 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:28:58 ]
- 送るときは厳格に、受ける時は寛容に、はネットワークプログラミングの基本。
- 121 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 22:03:41 ]
- 受けるときも厳格に、が基本だよ
- 122 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 22:30:16 ]
- 読解力が試されます
- 123 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 06:22:28 ]
- プロセス間通信用にソケットを使う場合、
どういう取り決めにしてますか? 自分はhttpと同じで、行単位で空改行までを 送受信単位にして、必要ならオプションの バイナリデータが続く、という感じにしてますが。 いきなりバイナリでやりとりするのは データ構造決めるのが面倒なんで。 何か既成のモデルがあったらいいんですが。
- 124 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 09:41:10 ]
- xml-rpcとか?
- 125 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 10:24:29 ]
- シンプルなバイナリなら TLV
任意長バイナリは GIF っぽくサブブロック化
- 126 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 15:46:48 ]
- >>121
受けるときは寛容に、が基本。 tools.ietf.org/html/rfc791 > In general, an implementation must be > conservative in its sending behavior, and > liberal in its receiving behavior.
- 127 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:09:50 ]
- >>123
俺の長い組み込み経験からのアドバイス。 1.レイヤを定める。下位レイヤは上位レイヤのデータ 構造を知らなくてもやり取り出来るようにする。バイ ナリ←→プログラムデータの変換部分との間にユーティ リティ的なレイヤがあると便利。 2.最初に「バイト長」とか入れない。これをやられる と送信側でデータが揃わないと送出開始出来なくなる。 仕事でこういうプロトコル決めてる奴を見ると殺意が 芽生える。 3.1や2を実現するために、たとえバイナリでもエス ケープ文字を用意する。俺が良く使うのは SLIP のエ スケープ(昔仕事で使ったから)。下位レイヤでデー タやコマンドの開始/終了などを用意する。読む側の 下位レイヤで「開始」が来たら読んでる途中のものを 全部破棄して例外を投げるように(初期状態 read で catch するように)すると、通信相手のバグその他で 変な状態に陥っても元に戻ることが保証出来る。
- 128 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:23:06 ]
- >>127
あんまり殺気たてんでくれ。 俺の20プロダクト中16回コロされてる事になる。
- 129 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 18:21:40 ]
- 俺はパート長は入れるね
- 130 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 18:40:40 ]
- 任意長のフィールドは 1 バイトのブロック長と続く最大 256 バイトのデータブロック。ブロック長 0 が終端。
GIF と PNG のフォーマットは通信用データ構造のお勉強に最適。
- 131 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 20:35:39 ]
- >>127
>2.最初に「バイト長」とか入れない。 が、なぜ以下のようになるのかまったく意味不明。 >これをやられると送信側でデータが揃わないと送出開始出来なくなる。 データそろえて送信したところで、ネットワーク上で何バイトずつ 受信側に届くかなんて何の保証もないわけで。そろえて送る 理由がまったくない。
- 132 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 20:46:19 ]
- >>131
127 じゃないけど、何を言ってるか分からないのは君だけだと思うよ。
- 133 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 22:27:05 ]
- 俺もわからん。RAW SOCKETの話?
データ長は,送るものが先に決まるならプロトコルとしてはありかもしれないが、 エスケープ文字を入れて区切りの失敗を見つけるぐらいならソケット閉じてしまったほうが早いのでは? むしろUDPで自分で順番を制御するとか。
- 134 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 22:38:11 ]
- ヒント:組み込み屋さん
- 135 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 22:53:03 ]
- 組み込みでハードウェアがらみな制限付きで、バッファの制限もついてるからかな?
DLNAとかではHTTPベースでchunked encodingとかあったが、あれは、ストリーム送信用に送信開始時にデータ長が不定だったからだが。 ほかもそんなことが多いのかな?
- 136 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 23:09:21 ]
- 内容検証用の MD5 ハッシュも全体を走査してみないと決定できないし。そういう情報を先頭に
持ってこられると、XSL の処理結果や BLOB を垂れ流したい場合は一度ファイルか何かに 落とさなきゃいけないからかなり不便。
- 137 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 23:13:02 ]
- 時代は組み込みだからな。
データ全体を収めるバッファを用意するなんてありえない。 数KBさえ無駄にできない。 お前らはこういう基本すらわかってないんだな。
- 138 名前:デフォルトの名無しさん [2008/04/23(水) 23:59:50 ]
- すみません教えていWINSOCKでPROXY対応なんですが
リクエストヘッダーへ Proxy-Connection: keep-aliveも Connection: Keep-Aliveも指定しているのですが PROXYがサーバー間の接続を勝手に切ってしまいます クライアントー>PROXYの接続は維持しています サーバー側のエラーコードは10054を示しています サーバーからのレスポンスはしっかり帰ってくるのですが 直後に切られます。 なんで? リクエストはPOSTなんですが これって正常動作?
- 139 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:04:51 ]
- 別に組み込みに限った話じゃないと思うが、システムの
時間ボトルネックが何処かを考えれば自明。 どうがんばっても通信速度以上のスピードでは送れない んだから、なるべく早く送信開始して、バッファアンダー ラン(タイムアウトによる PUSH とか)にならないよう にバッファに詰めていければ一番効率が良い。 とはいえ最近は下手するとディスクの方が遅かったりす るからなー。 >>136 > 内容検証用の MD5 ハッシュも全体を走査してみないと決定できない 送信時は送信しながら計算して最後に付加すればいいん だけど、受信は受信しながらオブジェクト作っても合致 しないときに破棄する必要があるんで面倒なんだよな。
- 140 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:09:05 ]
- 正常ではないな。
プロキシがサーバとの接続を維持する気がないなら Keep-Alive でリクエスト出したらいかん。 多分プロキシ実装が Persistent Connection に対応していないし、リクエストヘッダも何も考えず 素通りさせてるだけだと思うが。
- 141 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:13:59 ]
- 受信時は一定容量ごとのMD5でいいんだが、それよりファイル保存時にディスクアクセスを早くしようとして、
受信サイズの最後尾までファイルを拡張してから受信を開始すると途中で中断したときにある個所から後ろがごみデータが充填するんだが、 ファイルIOで一定サイズ移行のデータを削除してファイルサイズを小さくするって言う命令が無いために、ファイルを拡張すること自体が駄目何だよねぇ。 どこかに有効なファイルサイズを別に保存すればいいんだが、管理ファイルが散乱するので避けたいのだが、いい方法は無いものか。
- 142 名前:デフォルトの名無しさん [2008/04/24(木) 00:16:39 ]
- >>140ありがとうございます
ただ、PROXYは定番どころのSQUIDをデフォルトで 使用しています。 レスポンスヘッダーがおかしければ クライアントにデーターが届かないはずなんですが・・・ 困ってます。
- 143 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:40:33 ]
- >>141
? PC 程度以上の OS のファイルシステムなら (ANSI 標準じゃないにしても) 大抵用意されてるんじゃないか? www.linux.or.jp/JM/html/LDP_man-pages/man2/ftruncate.2.html >>142 よく知らんけど Squid が HTTP/1.0 互換モードで動いてるとか。
- 144 名前:デフォルトの名無しさん [2008/04/24(木) 00:41:55 ]
- #include<stdio.h>
void main(void) { int a,b,c; printf("数字を入力してください\n"); scanf("%d",&a); printf("数字をまた入力してください\n"); rewind(stdin); scanf("%d",&b); printf("数字をまたまた入力してください\n"); scanf("%d",&c); if(a == b == c) printf("等しいです,\n"); else printf("等しくないです,\n"); } これでa==b==cだったら"等しい"と表示させるように組んでるのに 1、1、1以外の数字は入力してもは全部"等しくないです"になるのは なんででしょうか?
- 145 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:44:52 ]
- >>144
pc11.2ch.net/test/read.cgi/tech/1206809426/ でどうぞ。
- 146 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:50:11 ]
- >>144
スレ違いだけど 君が参考にしてるものは信用しないほうがいい
- 147 名前:デフォルトの名無しさん [2008/04/24(木) 00:58:41 ]
- >>143
たしかにSquidが吐き出すヘッダーは 1.0になっています 調べてみます。
- 148 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 02:08:49 ]
- 非同期に双方向でイベント通信するためのプロトコルって何かある?
できれば 1:1 じゃなくて中継サーバかました n:n で使える奴。
- 149 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 02:38:39 ]
- >>148
TCP
- 150 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 03:12:13 ]
- >>149
もう一層上で。
- 151 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 03:48:09 ]
- >>150
2ちゃん
- 152 名前:デフォルトの名無しさん [2008/04/24(木) 05:17:26 ]
- SIP
- 153 名前:142 [2008/04/24(木) 05:33:32 ]
- 自己レスです
公開PROXYでテストしたところうまくいきました また、ぐぐったところ SQUIDはHTTP/1.1をHTTP1.0に 勝手に変換する事がわかりました (ヘッダーは別としてかといってPROXY側から切断するので???ですが) これ以降は板違いですので移動します m(。。)m
- 154 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 07:10:52 ]
- >>143
ありがとう。知らなかったよorz 少しぐぐって、winだと_chsizeや下のサイトがあった。 www.void.in/wiki/PortableFtruncate ANSIの関数全て読んだのは93年だったがそのころからあったのかな・・・・
- 155 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:26:33 ]
- winsock2でパケットキャプチャモジュールを作成したのですが、
プロミスキャスモードにしないと何もパケットを受信しません。 自分宛のパケットだけキャプチャしたいのでプロミスキャスモードは使用したくないのですが プロミスキャスにしなくてもパケットを受信する事は出来るのでしょうか?
- 156 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 23:31:22 ]
- バイト長いれるなって話がまったくわからん。
カイヤでstartとか送って、endが届くまでバイナリが続くとかにすればいいの?
- 157 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 23:32:45 ]
- s/カイヤ/下位レイヤー/;
- 158 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 23:47:02 ]
- 下位の部分を作るときに、アプリ(上位)側が全部を用意し終るまで出力を開始できないってことだろう。
例えばディスクへアクセスするドライバを書くときに、 ファイルのサイズが判明するまでHDDに書き込めない(領域を確保出来ない)ようだとやりにくくて仕方が無い、 というような話だと思う。たぶん。
- 159 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 23:49:35 ]
- あ、例えが悪いな。
HDDのドライバじゃなくてファイルシステムの造りの方が適切だな。
- 160 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 00:24:08 ]
- >>156-157
尻にしかれた某芸能人の事かとオモタ
- 161 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 17:04:22 ]
- >>130
> GIF と PNG のフォーマットは通信用データ構造のお勉強に最適。 画像フォーマットはツールが知らない種類のチャンクを読み飛ばせるように バイト長が入ってる。通信の為じゃない。
- 162 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 17:07:24 ]
- >>161
インタレースも知らないのか?
- 163 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 17:07:33 ]
- >>161
ま、確かにそうなんだけど、GIFはCompuServe由来だし、PNGはPortable Network Graphicsだから、通信用である事も意識していたと思うよ。
- 164 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 14:03:53 ]
- >>161
思いっきり局部しか見てませんて感じのレスだな。
- 165 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 10:45:56 ]
- OSPFにしろ、BGPにしろ、RSVPにしろ、そもそもIPからしてペイロード長先付けだろ。
データがそろわないと、長さが書けないから送信できず、バッファが要る、ってのは、 可変長データならチャンク化すれば済むこと。 固定長データなら、バイト列にエンコーディングするレイヤよりも上のレイヤが先にデータ長を宣言すれば済む。
- 166 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 10:47:38 ]
- 長い組み込み経験からのアドバイスなんだぜ?
素直に聞けよ。
- 167 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 14:00:03 ]
- 臨機応変
適材適所 一長一短
- 168 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 07:23:41 ]
- IP のパケットサイズって最大 64kB だと思うんだけど、イーサなんかの
MTU の 1,500B とかっていうサイズは、IP パケットがさらにその下のレイヤーで 分割されているということですかね?
- 169 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 09:36:31 ]
- IP fragmentation でヤフれ
- 170 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 14:49:23 ]
- IPスタックが、下層から最大送出可能な
パケットサイズをもらってきておいて、 IPパケットを送出する際に分割するような
- 171 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 15:32:52 ]
- >IP のパケットサイズって最大 64kB
これも実装依存だそうだ
- 172 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 17:14:11 ]
- ヘッダの長さフィールドが16bitってだけでそ
- 173 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:22:32 ]
- selectで
PULLHUP相当のエラーって感知できますか? 大人しくpull()った方がいい?
- 174 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 04:11:09 ]
- pullじゃなくてpollでggr
- 175 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 22:18:04 ]
- select失敗した場合ってFD_SETって
どうやって処理すればいいの? 単純にクリアするだけでおk?
- 176 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 04:03:10 ]
- おれはそういうの気にしないために、
fdsetは呼ぶ前にコピーして、そっちをselectに掛けてる。 コピーに変更があったら手動でオリジナルを更新。 何かのサンプルの真似だけど。
- 177 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 04:08:31 ]
- sshでログインしてるとき小さいファイルを向こう側へもっていきたいんだけど
わざわざFTPとか起動するの面倒なときっていい方法ありますか?
- 178 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 04:20:04 ]
- ssh ファイル転送
でggr
- 179 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 05:04:50 ]
- こっち側がwindowsの場合はどうすればよいでしょうか?
たとえばpoderosaを使ってる場合。
- 180 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 11:39:53 ]
- scp
- 181 名前:782 mailto:sage [2008/05/10(土) 21:29:28 ]
- linux版より誘導されてきました
よろしくオナガイシマス linuxでの実装、通信関連の実装の経験の無い未熟ものです www.katto.comm.waseda.ac.jp/~katto/Class/GazoTokuron/code/socket.html linux TCPサーバー側 という部分のコードをコンパイルしているのですが、 accept()システムコールのこの部分で dstSocket = accept(srcSocket, (struct sockaddr *) &dstAddr, &dstAddrSize); error: invalid conversion from \342\200\230int*\342\200\231 to \342\200\231 socklen_t\342\200\231 と怒られています どうしたら怒られなくなりますか コンパイラは gcc-4.1.2-33です
- 182 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 21:31:40 ]
- ↑
名前 782 スマン間違えてシマイマスタ
- 183 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:55:30 ]
- プログラムに2バイト文字使ってる?
- 184 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:04:14 ]
- >>183
コメント文で2バイト文字を使っていますが ソースコードでは使っていません
- 185 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:09:43 ]
- >>181
dstAddrSize が socklen_t ではないっていう型エラーでは? int で宣言してない?
- 186 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:50:33 ]
- >>185thx
>>tAddrSize が socklen_t ではないっていう型エラーでは? int で宣言してない? ビンゴでした、socken_t型で宣言したら、エラーが消えました 後、 #include <string.h> #include <unistd.h> を追加し int status; も追加し gcc tcp_serv.c -lsocket とコンパイルすると /usr/bin/ld: cannot find -lsocket collect2: ld はステータス 1 で終了しました となっ てしまいました・・・・・
- 187 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:55:06 ]
- -lsocket 不要
- 188 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 00:01:30 ]
- >>187
どうも、そのようですね HPが古いのでコンパイラのバージョンが違うから、こんなにエラーが出たのだと思います g++ tcp_serv.c -o tcp_sev でコンパイルに成功しましたが Waiting for connection ... のままなのですが、これで成功なのでしょうか? クライアントと接続したらこのメッセージは消えるものなのかな・・・・?
- 189 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 00:03:43 ]
- スマソ
gcc tcp_serv.c -o tcp_sev でした
- 190 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 00:23:28 ]
- クライアント側も作成して 127.0.0.1 で接続するのだ。
- 191 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 10:05:45 ]
- >>190
>>181です thx HPのコードを修正して、今しがたserverとclientの、実行ファイルを、同一PC内ですが起動して Wiresharkでパケットが流れているのを確認シマスタ 今書いているPCの他に後2台Windows XPとFedora Core 8が繋がっているので このサーバーで対戦型のオセロゲームでも実装してみようと思います^^ 一応C++使い(MFC)なのでWindows側の実装は難しく無いんだけど linuxのシステムコールやAPIの使い方を知らないのが痛い・・・・orz とりあえずMFCでいう処の、GetKeystate()関数のような、linuxでのキーボード入力のAPIが知りたい
- 192 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 10:29:13 ]
- >>191
select() が使えませんか?
- 193 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 10:43:50 ]
- >>192thx
>>191です なるほど、キー入力の前に接続方法を、再考する必要がありますね 複数のclientが、ぶらさがるサーバの場合、acceptシステムコールや、recvシステムコールをコールして実行してして 一旦、接続行われるとsocketをcloseするまでは、他からのリクエストが受けれなくなりますね・・・・orz そこでselect()システムコールの出番ですね、ちょいと調べてみます。
- 194 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 10:48:30 ]
- ブロックするのがいやならソケットをノンブロックにしても良い。
MFCの糞ソケットクラス使ってるとこの辺の感覚が分からんかも。
- 195 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 00:09:14 ]
- WinSock2を使用して特定用途のTCP/IPサーバをCで作ろうとしていますが、ポート番号の自動割り振りでハマっています。
抜粋したコードは以下のとおりです。 WSADATA wsaData; int len; static SOCKET serverSocket; static struct sockaddr_in addr; if (WSAStartup(MAKEWORD(2, 2), &wsaData)) return -1; serverSocket = socket(AF_INET, SOCK_STREAM, 0); if (serverSocket == INVALID_SOCKET) return -1; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.S_un.S_addr = INADDR_LOOPBACK; // ★ループバックアドレスを設定 addr.sin_port = htons(0); // ★ポート番号の自動割り振り bind(serverSocket, (struct sockaddr *)&addr, sizeof(addr)); len = sizeof(addr); getsockname(serverSocket, (struct sockaddr *)&addr, &len); // 自動的に割り振られたポート番号を取得 printf("%s\n", addr.sin_port); // 0が出力される listen(serverSocket, 1); getsocknameを行った後でaddr.sin_portに割り振られたポート番号が入っていることを期待するのですが、WinXP+VC7.1では0になっています。 手順がどこか悪いのでしょうか?
- 196 名前:195 mailto:sage [2008/05/16(金) 01:04:52 ]
- >>195
自己レスです。 addr.sin_addr.S_un.S_addr = INADDR_LOOPBACK; // ★ループバックアドレスを設定 ↓ addr.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK); ↓もしくは addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); でした。 また、addr.sin_portは使うときにはntols(addr.sin_port)としてやる必要がありました。
- 197 名前:デフォルトの名無しさん [2008/05/25(日) 08:38:08 ]
- こんにちは。
winsock、TCP/IP非同期の、ゲーム用のチャットを作ってます。 クライアントからサーバーにチャット文が届いたらfor文で回して 各クライアントのソケットにsendしているのですが、 (for(i=0,i<MAXCLIENT,i++) send(socket[i])みたいな感じです) この方法だとユーザーが少ないうちはいいのですが、 ユーザー全体数が150人くらいになると重くなります。 少しタイムラグがあって届くみたいな感じです。 どうすれば解決するでしょうか? よろしくお願いします。
- 198 名前:デフォルトの名無しさん [2008/05/25(日) 09:03:57 ]
- サーバーのCPUがマルチコアなら、マルチスレッド使うと早くなるよ
- 199 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:19:33 ]
- IPv6のサーバーサイドのプログラムが見つかりやせん
- 200 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:21:43 ]
- >>197
UDPにする
- 201 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:49:35 ]
- >>197
ノンブロッキングにする
- 202 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 13:25:46 ]
- その問題はノンブロックにして解決するの?
- 203 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 13:28:48 ]
- マルチキャスト
- 204 名前:デフォルトの名無しさん [2008/05/25(日) 14:40:10 ]
- 俺は2000クライアントにマルチキャストするプログラム書いたが
そんなに気になるラグはなかったぞ。多くても150msくらいの遅延しかない。 プログラム的に問題あるんじゃない?TCPでもsendにそんなに時間かかるって事はないと思うけど・・・ 送信するデータのサイズにもよるけどね。
- 205 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 14:51:07 ]
- 単純な foreach (clients) { client->send(data); } のとき
一匹でも激遅クライアントがいると そこでsendが糞詰まりを起こして全体が遅くなる
- 206 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:06:04 ]
- え、send()って、相手に到着しないと抜けないの?
- 207 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:56:12 ]
- tcp送信バッファが満杯になればblockする
- 208 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:13:36 ]
- なんでn回ユニキャストする発想になるのか。
- 209 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:29:59 ]
- そりゃmulticast/boardcastを知らないからだろjk
- 210 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 23:18:00 ]
- boardcastは俺も知らない。
- 211 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:33:39 ]
- TCPはmulticastできないみたいです。。。
for文じゃなくてマルチスレッドにするといいのかな? どうも同じような気がするのですが、一応やってみます。
- 212 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 02:11:21 ]
- くだんのスレがアフォなのはどうでもいいが、150ms遅延「しかない」
とかもう救いようがないな。
- 213 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 03:31:04 ]
- キューを実装して非同期sendすればプログラムが重くなるのは解消される
- 214 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 10:34:34 ]
- あれ、>>197には
>TCP/IP非同期 って書いてあるやん 150人に一斉同報するのってフツーに重いんじゃないの
- 215 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 10:38:07 ]
- ircdってどんな実装になってるんだろ
- 216 名前:デフォルトの名無しさん [2008/05/27(火) 02:32:22 ]
- >>212
環境を書いてないからなんとも言えんがな。
- 217 名前:デフォルトの名無しさん [2008/05/27(火) 02:57:49 ]
- 質問者が馬鹿だったのは、二チャンネルで質問したことだろな。
- 218 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 09:04:41 ]
- 197じゃないけど、似たようなプログラムでクライアントにダイヤルアップレベルの細い回線が混ざってて、
かつ数百キロバイトのデータが必要になる場合があるときは ・単一スレッドから非ブロッキングモードで送信 ・接続毎にキューを持ったスレッドを作成してブロッキングモードで送信 どちらがいいいのでしょうか? 接続クライアント数は10程度です。
- 219 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 09:33:28 ]
- 10程度だったらコードの見易さからいってスレッド作るのはアリかな
そうだとしてもブロッキングにはしないなあ、中断しにくいから
- 220 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 19:59:52 ]
- ネットワークとは直接関係ないのですが。。。
ネットゲームの延長の質問ということでご了承ください>< 直接アプリのアイコンをダブルクリックで起動じゃなくって、 ハンゲームとかのHPみたいにゲームスタートみたいなボタン(リンク)を クリックするとアプリが起動するのありますよね。 HPからユーザー側のアプリが起動できちゃうと悪さができちゃうからムリ みたいな事も聞いたことあるんだけど。。。 ああいうのってどうやってるのでしょうか?
- 221 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:26:27 ]
- >>220
ためしに登録してみたが・・・ ActiveXコントロールのインストールが必要ですって言われたぞ
- 222 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:27:07 ]
- 署名付きActiveXだとおもうが。
#厳密には署名がなくても不可能ではないけど、 #そのセキュリティを緩めるのは致命的な筈
- 223 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:27:45 ]
- ActiveXコントロールってなんですか?
- 224 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:28:47 ]
- >>223
ググレカス
- 225 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:34:28 ]
- 署名付きアプレットを認証局から証明書を発行してもらう必要があるみたいですね。
多分有料ですよね。 でも大体わかりました、ありがとうございます!
- 226 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:36:59 ]
- ハウス ググレカスー
- 227 名前:デフォルトの名無しさん [2008/05/29(木) 20:55:00 ]
- おいしそうなおやつがあったので、置いておきますね
東京藝術大学音楽学部 羽目鳥祭り開催中 school7.2ch.net/test/read.cgi/musicology/1211727581/
- 228 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 05:21:46 ]
- ActiveXコントロールは
ユーザーがインストールを許可する事でインストールされる。 インストールしなければ動かない。 実体はDLLかEXEなので起動されれば何でもできてしまう。 よくスパイウェアとして使われる。 よほどの馬鹿でなければ 信用あるサイト以外からはインストールしないので 作っても無駄
- 229 名前:デフォルトの名無しさん [2008/05/30(金) 05:27:24 ]
- ユーザは馬鹿だぜ?
- 230 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 08:14:56 ]
- ほいほいインストールすると思う。
署名のないActiveXを使ってる企業などのサイトで「警告が表示されますがOKを押してください」なんてわざわざ解説してたりするし。 「インストール手順を増やすうざいダイアログ」ぐらいにしか思ってないんじゃない。 あれを見るにつけ、日本って終わってると思う。
- 231 名前:デフォルトの名無しさん [2008/05/30(金) 19:26:57 ]
- 作り手もかなりあほだぜ
- 232 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:11:41 ]
- Vistaでは署名無しAXは起動できないんじゃなかったっけ
- 233 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 20:30:02 ]
- 絶対ほいほいインストールする
- 234 名前:デフォルトの名無しさん [2008/05/31(土) 23:41:10 ]
- とあるサイトからデータを自作したプログラムでダウンロードしているのですが、
ダウンロードに成功したり失敗したり 2分の1の確率で動いているのですが、 ダウンロードに成功しないのは なにが原因でしょうか?
- 235 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:49:58 ]
- 自作したプログラムなら、原因を調べられるだろう?
どこで何のエラーが返ってきてるとか
- 236 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:55:45 ]
- 翻訳:エスパー募集中
- 237 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:14:20 ]
- HRESULT h;
h = URLDownloadToFile( 0, http, file, 0, 0 ); switch(h){ case S_OK: printf( " success.\n" ); break; case E_OUTOFMEMORY: printf( " E_OUTOFMEMORY\n" ); break; case INET_E_DOWNLOAD_FAILURE: printf( " INET_E_DOWNLOAD_FAILURE\n" ); break; default: printf( " error?\n" ); break; } 上のようにしてやっているのですが、 h が default の値しか返さなくて何が原因なのかがわからないのです。
- 238 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:20:46 ]
- 値を表示してみるという思いつきができないのか
なんというゆとり
- 239 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:24:56 ]
- defaultを使わないでもっと絞ればいいだろ
- 240 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:31:06 ]
- >>238
戻り値は -2146697510 です 意味わかるんですか?
- 241 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:32:33 ]
- >>239
リファレンスには S_OK E_OUTOFMEMORY INET_E_DOWNLOAD_FAILURE の3つしか 特に戻り値として明記されていませんでしたので これ以外の戻り値は わかりません。
- 242 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:40:10 ]
- 仕様書か実装のバグだね
MSに抗議しないと
- 243 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:40:42 ]
- リファレンス外の戻り値を返すとかどんだけ糞なライブラリorリファレンスだよ
- 244 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:10:01 ]
- -2146697510 = S_OK + E_OUTOFMEMORY + INET_E_DOWNLOAD_FAILURE
- 245 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:12:17 ]
- >>244
おまえすげえなwww 3つの戻り値の和を返すというのはいったいどういうことを言いたいんだろうかこの関数は
- 246 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:20:04 ]
- >>244
1245206じゃハゲ テキトーなこと抜かしてるんじゃねーよボケ 死ね工作員
- 247 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:40:25 ]
- 一体何の工作だ
- 248 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:52:00 ]
- FACILITYの意味からして足すのはありえんと思うんだが
- 249 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:54:15 ]
- -2146697510 = S_OK | E_OUTOFMEMORY | INET_E_DOWNLOAD_FAILURE
- 250 名前:デフォルトの名無しさん [2008/06/01(日) 01:55:03 ]
- >>248
ビット和だろ常考
- 251 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:59:40 ]
- -2146697510を16進数に直すと0x800bfeda
8 は失敗をあらわす。 b は FACILITY_CERT で、電子証明書関連のエラーだとわかる。 feda は不明。 httpsで繋ごうとして何かがまずかったんだなとはわかるね。
- 252 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 02:09:45 ]
- winerror.hに詳しくなるスレはここですか
- 253 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 04:57:28 ]
- スタック破壊してんじゃネーノ
- 254 名前:デフォルトの名無しさん [2008/06/01(日) 05:07:10 ]
- ネットワーク接続を切る、接続するAPIってあるんでしょうか?
言語は C/C++ Windowsでお願いします
- 255 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:08:39 ]
- あるよ。
- 256 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:19:49 ]
- >>255
何でしょうか?
- 257 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:23:23 ]
- Winsock
- 258 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:49:25 ]
- すいません 間違えました
ネットワークでなく インターネットの接続です
- 259 名前:デフォルトの名無しさん [2008/06/01(日) 05:50:53 ]
- どう違うんだ
- 260 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:53:14 ]
- 稀にIPじゃない場合もあるか否か
- 261 名前:デフォルトの名無しさん [2008/06/01(日) 05:56:17 ]
- IPじゃないってドメインのことか?
ドメインならgethostbynameでIPに変換可能 あとは一緒
- 262 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 05:56:57 ]
- ネットワーク接続 WNetConnectionDialog関数を使ったら
ttp://sakuratan.ddo.jp/imgboard/img-box/img20080601055455.jpg のようなダイアログがでたのですが、これではないやつで インターネット接続関連のダイアログがでてくると幸いです
- 263 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 06:02:35 ]
- >>261
Internet Protocolを使ってないコンピュータネットワークもあるってこと。
- 264 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 06:30:21 ]
- connect() 関数じゃないですよ?
- 265 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 06:51:53 ]
- 物理的にネットワークアダプタを抜いた状態と同じ環境にしたいってことです
- 266 名前:デフォルトの名無しさん [2008/06/01(日) 07:41:40 ]
- >>263
あるわけないだろ。 ばか?
- 267 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 07:45:56 ]
- >>266
うせろキチガイ
- 268 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 07:47:43 ]
- >>266 が無知なのは分かったw
- 269 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 08:31:21 ]
- >>268が無知すぎる件
ある意味犯罪
- 270 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 09:43:55 ]
- >>269
アナタを・・・ telnetです・・・
- 271 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 15:34:01 ]
- >>266,269
AppleTalkとかIPXは?
- 272 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 15:34:40 ]
- >>265
Win32APIでネットワークアダプタを無効にするとか やり方知らんが多分できるとオモ
- 273 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 15:48:13 ]
- WindowsでSockRAW取れないのですが
どうしてですか?XP SP2です
- 274 名前:デフォルトの名無しさん [2008/06/01(日) 16:05:42 ]
- 覗くなということだ
- 275 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 18:13:05 ]
- >273
ググればすぐわかる。
- 276 名前:デフォルトの名無しさん [2008/06/01(日) 19:20:30 ]
- MMORPGのサーバとクライアントの同期化について知りたいのですが、
何か参考になるものとかありますか?
- 277 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 20:02:12 ]
- 韓国語を覚えたほうがいいかもね
- 278 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:23:04 ]
- >>277
理由は?
- 279 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:37:34 ]
- 市場の8割がチョン製クリゲ
- 280 名前:デフォルトの名無しさん [2008/06/02(月) 04:57:58 ]
- 日本ってなんで情報なかったりするんだろう(・ω・)
- 281 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 10:36:41 ]
- 日本のゲーム業界特有の情報閉鎖性もあるけど
オンラインゲームが流行ったときに不況で 誰も手を出さなかったとういのもあるかも そして>>279
- 282 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 13:03:35 ]
- 商売がヘタクソってのも多いと思うな>日本のメーカー
あからさまな出し惜しみとかして客に逃げられるパターンが多すぎる
- 283 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 13:30:29 ]
- 商売というか、小汚い金の稼ぎ方が日本人にあわないんだろうね
あっちの人たちは金が儲かれば形振りかまわないから成功はする 名声はないけど
- 284 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 14:20:06 ]
- うん,高度成長期の日本そっくり
- 285 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 14:23:01 ]
- パンヤもみんゴルのパクリといわれてるし、
その他もろもろパクリは多いよな。 そりゃ作るのは楽だよ 開発で使ってるソフトも平気で割れでやってそうw
- 286 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 16:21:36 ]
- >>285
ネットランナー・・・
- 287 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 21:38:57 ]
- WinSockでソケットのポート番号を
sockaddr_in add; int addlen =(int)sizeof(add); getpeername(Sock, (struct sockaddr *) &add, &addlen); char buf[50]; _itoa_s(add.sin_port,buf,(int)sizeof(buf),10); といった感じで取得はできましたが IPアドレスを取得するにはどうすればよいでしょうか?
- 288 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:20:02 ]
- getpeernameで返してもらった連中を
getnameinfoにでも突っ込めば。
- 289 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:35:15 ]
- sockaddr_in だと長さ足りなくないか
- 290 名前:デフォルトの名無しさん [2008/06/03(火) 22:54:40 ]
- 【エアー調査会社】HG嫁 住谷杏奈61【ハッカー妊婦】
human7.2ch.net/test/read.cgi/ms/1212471581/
- 291 名前:デフォルトの名無しさん [2008/06/04(水) 01:37:08 ]
- ネットプログラム初心者です。
ネットゲームのプログラミングが目的なのですが、 コネクション数は1〜200あたりで、OSがwindowsXPとした場合、 www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/io-strategies.html を読む限り、WSAAsyncSelectかWSAEventSelectを使うのが良さそうですが どうなのでしょうか。
- 292 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 01:46:06 ]
- 「Winsock標準に準拠」にこだわるのでなければ(もはや意味なし)
IOCPにしとけ
- 293 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 01:48:59 ]
- 期待した動作をしなくてもくじけないココロがあるならなんとでもなるZE!
- 294 名前:デフォルトの名無しさん [2008/06/04(水) 01:57:35 ]
- まったく使ったことがないのでよくわかりませんが、
select 毎回の引数の処理が無駄 WSAAsyncSelect,WSAEventSelect メッセージの通知が遅い IOCP とにかく速い、プログラムは難しくなる で良いでしょうか? ROのエミュ鯖ではselectが使われてて、引数の処理が入ってたのは見たなぁ。
- 295 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 02:18:41 ]
- selectの64制限は確か#defineで回避出来たと記憶してるが
WSAEventSelectの64制限(WaitForの制限)は 複数のスレッドに64以下ずつわけるしかないんじゃなかったかな。
- 296 名前:デフォルトの名無しさん [2008/06/04(水) 02:29:14 ]
- 複数のスレッドになると難しそうですね。
マルチスレッドもネットプログラミングの経験もない自分的には ひとまずselectが良さそうな気がしてきました。 オープンソースのmmoが2つともselect使用しているみたいなので、実装例見れますし。
- 297 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:45:00 ]
- pthread_mutexって10万個作って使っても
問題ない?
- 298 名前:デフォルトの名無しさん [2008/06/04(水) 20:59:21 ]
- >>297氏とは違うのですが、ミューテクスとセマフォを分かりやすく説明できる方いないでしょうか?
ググッてみたけど、どこも似たような分かりにくい説明が多いです。。
- 299 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:22:02 ]
- ミューテクスは複数のスレッドがあった場合、順番に処理するのに対して、
セマフォを複数のスレッドが同時にアクセス可と言う考え方でいいのでしょうか?
- 300 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:06:23 ]
- セマフォは5個の資源を10人で使うというような考え方。
listenの引数みたいなというか
- 301 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:14:35 ]
- >>300
係数1のセマフォならいっしょじゃねーか 嘘教えるな
- 302 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:17:22 ]
- >>298
ミューテックスは、同時にひとつのスレッドしかアクセスできない。 1人用のイスみたいなもの。 早いもの勝ちで1人だけが獲得できる。 残念ながら座れなかった人は、イスが空くまで待つ。 イスが空いたら、待ってましたとばかりに奪い合って、勝った人1人だけがイスに座れる。 負けた人は、またイスが空くまで待つ。 セマフォは、同時にアクセスできるスレッドの数を好きに指定できる。 3人まで座れるソファーとか、そういうの。 4人目が来たら、誰かがどくまで待つ。 1にすれば、ミューテックスとほぼ同じ。
- 303 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:25:50 ]
- >>301
だからそのものズバリだろw 教科書でミューテックス=二進セマフォという表記も使われる。
- 304 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:50:39 ]
- WinやRecursiveにしたときのpthreadは、Mutexは同じスレッドならば何度でも取得できるところが一番違う。
スレッドごとの排他制御にMutex、複数の資源管理にセマフォ、単一の資源管理ならどっちでもいい。
- 305 名前:298 mailto:sage [2008/06/04(水) 22:53:48 ]
- >>299-303
>>302さんの説明分かりやすかったです。ありがとうございました。 ググッても、どこも排他的とかいまいち理解しづらいですよね。。
- 306 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 23:25:22 ]
- なんというスレ違い
- 307 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 12:27:33 ]
- C++使いなのですが、socketの実装未経験です、
車輪の再発明はしたくないのでlinuxのsocketライブラリを探しています CommonC++(commoncpp)というのを見つけたのですが www.sunsite.ualberta.ca/Documentation/Gnu/CommonC++-1.0.2/html/index.html ソースコードを見てると使いやすそうなんですが、他にもオマイラお勧めの、良いライブラリとか あったら教えてホスイのですが boostにもsocketのライブラリがあるっぽいんだけど・・・・こっちの方が有名なのかな?
- 308 名前:デフォルトの名無しさん [2008/06/08(日) 12:56:46 ]
- boostのがおすすめ
- 309 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:23:14 ]
- オマイラだと?何だその態度は
- 310 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:28:50 ]
- >>307
一度くらいは自分で実装するべきだ。その上で便利なライブラリを探すんだ。 車輪の再発明はしたくないって便利な言い訳だね。
- 311 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:41:01 ]
- 別に使えるものは使えばいいんじゃねえの
いちいちカーネルやコンパイラから自分で書き起こしたりはしないだろ
- 312 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 21:49:25 ]
- >>307どえす
VS2005とgcc-4.1.2-33に、boost-1_35をスコーンとインスコして asioをやりまくっているんだが VS2005は、無問題、gccでコンパイルする場合 いちいちコンパイル毎、変数を設定するのがマンドクサイので .bash_profileに CPLUS_INCLUDE_PATH=/usr/local/include/boost-1_35; export CPLUS_INCLUDE_PATH LD_LIBRARY_PATH=/usr/local/lib; export LD_LIBRARY_PATH 追加設定して $ g++ -pthread -lboost_system-gcc41-mt sample.cpp こんな感じでコンパイルしてて、今んとこ無問題なんだが、どうよモマイラ、 他にいい方法があったら聞いてやるが
- 313 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:12:11 ]
- Makefile
- 314 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:02:18 ]
- >>312
聞いてくれなくてもいいが
- 315 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:13:36 ]
- boostの非同期ライブラリおすすめ>>307
- 316 名前:デフォルトの名無しさん [2008/06/09(月) 00:07:43 ]
- >>315
boost::asioも非同期ライブラリ持ってるんじゃないの?
- 317 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 10:02:28 ]
- ACEだな、やっぱでかいし
- 318 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:12:11 ]
- ごめん。
asioのことを言ったw>>315
- 319 名前:デフォルトの名無しさん [2008/06/10(火) 21:12:45 ]
- ネットワークプログラミングの利点って何?
- 320 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:32:02 ]
- ネットワーク通信ができること。
- 321 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 03:25:33 ]
- 宿題スレに質問投げておくと勝手にだれかが作ってくれる
これがネットワークプログラ
- 322 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:27:03 ]
- >>321
小人さんは間違いが多いのが欠点だ。
- 323 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:24:38 ]
- >>312どえす、おいモマイラ一週間ぶりに俺様が来ましたよっと>>310の言う通り、漏れはソケット初心者なので、動作を理解するうえで、薄いラッパークラス作っている
近い将来、サーバー側、クライアント側で行う動作を基底クラスで実装して、それぞれのクラスを派生させようと思うが、サーバー側とクライアント側で 何が共通手順なのか、今はまだよく分からないので、とりあえず前に進めるためおこなっていおる どうよこんな感じで class Socket { int fd1, fd2; struct sockaddr_in saddr; struct sockaddr_in caddr; int len; public: Socket() : fd1(0), fd2(0), len(0) {} // コンストラクタ ~Socket(){} // デスクトラクタ void MakeSocket(); // ソケット生成 void InitSocket( sockaddr_in saddr) ; // ソケット初期化 void NameOfTheSocket( sockaddr_in saddr );// ソケットに名前を代入 void BindSocket( sockaddr_in saddr ); // ネームバインド void ListenSock( int fd1 ); // リッスン void AcceptSocket(); // アスペクト void CloseSocket(); // ソケットクローズ };
- 324 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:24:59 ]
- 続き
void Socket::MakeSocket() { if ((fd1 = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(1); } } void Socket::InitSocket( sockaddr_in saddr ) { memset((char *)&saddr, 0, sizeof(saddr)); } void Socket::NameOfTheSocket( sockaddr_in saddr ) { saddr.sin_family = AF_INET; saddr.sin_addr.s_addr = INADDR_ANY; saddr.sin_port = htons(PORT); } void Socket::BindSocket( sockaddr_in saddr ) { if (bind(fd1, (struct sockaddr *)&saddr, sizeof(saddr)) < 0){ perror("bind"); exit(1); } } void Socket::ListenSock( int fd1 ) { if ( listen(fd1, 1) < 0) { perror("listen"); exit(1); } }
- 325 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 06:51:37 ]
- オブジェクト試行ですか?
- 326 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 07:58:40 ]
- sockの関数と1対1に対応するメソッドを作ってるうち恩恵を受けにくい。一連の決まった操作をひとつのメソッドにまとめてしまおう。
sockaddrはラップして、アドレスのクラスを作ってしまう。簡単にアドレスを設定できるようにするといい。 あと、言葉遣い直せ
- 327 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 08:00:05 ]
- JavaとかRubyとかPythonとかの
ソケットクラスの構成をみれば〜?
- 328 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 08:27:18 ]
- >>326
君はまずその変な日本語を直さないとな 他人の言葉遣いを指摘してる場合じゃないぞ
- 329 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:27:20 ]
- さて、些細な顰蹙をかっているようだが、2ちゃんねるクオリティーということで、まぁ許してちょんまげ
こんな感じで、完成形に徐々に近づきつつあると思うが、どうよ class Socket { struct sockaddr_in saddr; struct sockaddr_in caddr; public: Socket(){} // コンストラクタ ~Socket(){} // デスクトラクタ void SetAddresSocket( sockaddr_in saddr, unsigned short sock_family, unsigned short sock_port, int sock_addr ); // sockaddrラッパークラス int DescriptSocket(); // ソケットを作り、成功したらソケットディスクリプタを返す };
- 330 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:27:56 ]
- void Socket::SetAddresSocket( sockaddr_in saddr, unsigned short sock_family, unsigned short sock_port, int sock_addr )
{ saddr.sin_family = sock_family; saddr.sin_addr.s_addr = sock_port; saddr.sin_port = htons( sock_addr ); } int Socket::DescriptSocket() { int fd1, fd2; size_t len; if ((fd1 = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(1); } memset((char *)&saddr, 0, sizeof(saddr)); // 初期化 // バインド if (bind(fd1, (struct sockaddr *)&saddr, sizeof(saddr)) < 0){ perror("bind"); exit(1); } if ( listen(fd1, 1) < 0) { perror("listen"); exit(1); } len = sizeof(caddr); if ((fd2 = accept(fd1, (struct sockaddr *)&caddr, &len)) < 0) { perror("accept"); exit(1); } close(fd1); return fd2; }
- 331 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:34:50 ]
- しかしなんだね、g++ってVC8とは若干違うよね
accept()関数の第三引数の accept(fd1, (struct sockaddr *)&caddr, &len)) lenだが、VC8ならintでも無問題なのだけど、g++はsize_tじゃないと嫌だと 怒ったりとかと少し戸惑う、>>330でした
- 332 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:54:59 ]
- POSIXではsocklen_tだけど、intで実害はない。
size_tとしてしまうのは誤り。 socklen_tとint(やsize_t)が同じサイズか判定をどこかに入れておくと安全。 // 偽なら負の添え字になりコンパイルエラー #define STATIC_ASSERT(cond) extern int static_assert_array[ (cond) ? 1 : -1 ]; STATIC_ASSERT(sizeof(int) == sizeof(socklen_t))
- 333 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 10:05:46 ]
- >>332
Thx 物知りですね、勉強になります gccの場合、accept()関数の第三引数は、int型でコンパイルに成功してたんだけど、g++でコンパイルした際にエラーが出たんで なんでかなと思ってた、コンパイラに依存しないようにアサーションマクロを書いておくと、メモメモ
- 334 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:25:52 ]
- Winsockで非ブロッキングモードにしたいときは
selectでウインドウハンドルとそのウインドウのプロシージャを設定するけど 最初はウインドウAでメッセージ受けてたけど 次はウインドウBでメッセージ受けるように変更 とかいうことはできますか? 本当はウインドウハンドル指定しなくてよければ通信メッセージ受けるところだけ独立させたいんだけど
- 335 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:32:58 ]
- >>334
WSAEventSelectを使えばウインドウハンドルはいらない。
- 336 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:35:32 ]
- >>335
お〜 ウインドウハンドルいらない版もありましたか ありがとうございまつ
- 337 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:12:06 ]
- winsockについてです
gethostbynameではwinsockが確保したメモリが返されてきますが これはどうすると解放できるのでしょうか?
- 338 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:17:39 ]
- >>337
gethostbynameでググルと一番上に解説が出てくるし
- 339 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 20:59:48 ]
- >>329なんだけどさ
>>327 が書いてたんで、rubyのソケットのライブラリを見てたら、やっぱ個別に sockの関数と1対1に対応するメソッドを持ってるよね >>326は 1対1に対応するメソッドを作ると、恩恵は受けにくいと言うし ネットワークプログラミングとは直接関係ないけど、どっちがいいんだろうな? この問題にはいつも悩まされる 永遠の命題なのか・・・・orz
- 340 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:10:21 ]
- >>339
たとえば、自分向けのライブラリを作るなら、いきなりconnectで繋がって、closeで閉じるライブラリを作り置きしておくと、今後ずっと楽になる。
- 341 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:19:02 ]
- >>340
わかりやすい説明、ありがとう たしかに、それは言えるのだけど、ついつい、かまえてって言うか、型にはめようとして 再利用性だとか、拡張性だとか、考えてしまいクラスの設計には、いつも苦労するんだよね、俺の場合 もう少し気楽に考えた方がいいかもね
- 342 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:26:20 ]
- >>341
共通の機能は基本クラスに、専用の機能は派生クラスに分散。一つのクラスで機能を欲張らないのが設計のコツ。
- 343 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:27:55 ]
- >>341
C/C++で書いてるんなら、いつでも下に降りられるから、ある意味 どうでもいい気がする。 rubyみたいな奴だと、標準で抽象度の高いAPIしか用意されてないと そこより下に降りたければCでextension書くしかないって話になる。 だからそういう設計になってるんだと思うよ。
- 344 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:34:17 ]
- >>341です
皆さん、いい話ありがとう
- 345 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:34:33 ]
- TCP/IPで、自ソケットが生きてる場合、一時的に通信経路に問題があってもsendは成功すると
思いますが、その後すぐにその問題が解決したら、相手側には届くのでしょうか?
- 346 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:36:06 ]
- >>345
いつか届く。
- 347 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 04:36:59 ]
- 僕の想いも届いて!
- 348 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 06:09:21 ]
- winsockを使っていますが
”こんにちわ” ”こんばんわ” を相手が送信したときに 2つのメッセージに対して FD_READが2回発生するときと 1回しか発生しないときがあります 2回発生するときは ”こんにちわ” と ”こんばんわ” を別々に取得できて問題ないのですが 1回しか発生しないときは ”こんにちわこんばんわ”という1つの文字になってしまいます 送信相手が1回送信するごとにFD_READが1回発生するように設定することはできますか? できないとして1送信ごとに何らかの記号をつけて識別したりするのでしょうか?
- 349 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 06:29:10 ]
- 基本的にできない。「こんにちわ」と「こんばんわ」を別のものとして扱うなら、それぞれの頭に俺プロトコルのヘッダ(メッセージ長など)を付けて送り、受信側でそれを解釈する。
あと、どーでもいいけど「こんにちは」と「こんばんは」だと思う。
- 350 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:57:00 ]
- そういうときこそ、
SCTP。 おまいら使ってる?
- 351 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:04:34 ]
- >>348
そもそも 「こ」「ん」「に」「ち」「わ」と5回に分かれてFD_READが来ることだってありえるぞ。 TCPとはそういうもんだ。区別したけりゃストリームに自前で区切情報載せろ
- 352 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:09:49 ]
- >>349 351
ありなとうございまつ Sendの末尾に区切り文字入れれば 1回で複数受信してもOKじゃね? とか思ったけど1送信あたりでも分離することあるのですかorz しかしそうなると 「こんに」「こんばんわ」「ちわ」という受信すらありえるような それともTCPは受信順番も考慮するからそれはないと思っていいんでしょうか?
- 353 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:32:35 ]
- つ[延滞]
必ずしも送った順に相手に届くとは限らない この辺はUDPとTCPの違いを調べれば分かる
- 354 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:58:37 ]
- >>352
TCPは順番は変わらないよ!。
- 355 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 11:35:18 ]
- マルチスレッドなプログラムでsocketを使った場合に、
thread1(){ send("ABCDE"); } thread2(){ send("abcde"); } の2つのスレッドが同時にsendをコールした場合、 相手側でrecvした時に、 "ABCDE"と、"abcde"が混ざることってありますか? 例えば、"AaBbCcDdEe"みたいに。 シングルスレッドな場合だと、 send単位で送ったデータはそのまま出て来ますよね。
- 356 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 11:50:15 ]
- せめて"ABabcdeCDE"くらいの例えならな
- 357 名前:デフォルトの名無しさん [2008/06/16(月) 11:52:11 ]
- 1. netstat -a で見れる情報(プロトコルやアドレス/ポート ステータス)は
どこから持って来てるんでしょうか? (同じ情報を自分のプログラムから取得するにはどうすればいいでしょうか?) 2. TDImonか同等のプログラムのソースコードはどこかにないでしょうか?
- 358 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 11:53:48 ]
- netstatのソース見ればいいんでねぇの?
- 359 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 11:59:56 ]
- >>356
>"ABabcdeCDE" これもありうる? カーネルの中のソケット毎の送信バッファってのは、1つだよね。 複数のスレッドがsendをコールすると、その送信バッファに、 送信データが詰め込まれて行くんだと思うんだけど、 それがsend単位に区切られて詰められない可能性もあるってこと? こういう動きって、OS依存? send実行中に、スレッドがコンテキストスイッチしたらこうなるってこと? 2このスレッドが、同時に100Mバイトとかのデータをsendしたら、 そうなりそうな気がしないわけじゃないけど。
- 360 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 12:04:11 ]
- そもそも同期化もせずに 1 つのソケットに複数スレッドで書き込むな。
- 361 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 12:09:29 ]
- 232Cでやっちまったことはあるな
- 362 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 12:50:47 ]
- >>360
確かにおっしゃる通りですね。 ってことは、やっぱりそうなる事もありうるってことですか。
- 363 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:19:51 ]
- >>362
実装依存だろうし、起きるかどうか考えるだけ無駄
- 364 名前:デフォルトの名無しさん [2008/06/16(月) 21:45:50 ]
- ロックしろよ
- 365 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:51:18 ]
- Unixで同期モードならおきない気がする
- 366 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:11:13 ]
- >>365
どういった理由からですか?保障されているんですか?
- 367 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:13:06 ]
- TCPだったら、sendした順に届くとは限らない。
スレッド関係なしに。 だから、逐次処理で send( "ABCDE" ); send( "abcde" ); とかやっても、相手側で abcdeABCDEと受信することも普通にある。
- 368 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:19:20 ]
- おいおい。TCPでそれはないって。
- 369 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:22:45 ]
- >367
え??
- 370 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:30:04 ]
- 次にお前は「ワーイ沢山釣れたー」と言う…
- 371 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:37:42 ]
- winsockならwww.kt.rim.or.jp/~ksk/wskfaq-ja/intermediate.html#threadsafety
まぁ、どの実装でも、自前でコントロールすべしって結論になると思う
- 372 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:39:36 ]
- あれ?システムコール実行中にコンテキストスイッチて起るんだっけか?
- 373 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:47:19 ]
- 起こらないとするなら、誰かがsendを喚ぶと、戻ってくるまで
システムフリーズするだけだな。
- 374 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:51:31 ]
- TCPは送信順番も送信内容も保障されるか破棄されるんじゃないの?
順番がかわるとか複製される可能性があるのはUDPじゃないの? おれなんか間違ってること言ってる? 手元の参考書にそう書いてあるんだけど?
- 375 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:56:01 ]
- 釣れた釣れた(^^)
バーカ >>374
- 376 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:01:15 ]
- >>375
スレ監視し続けてたんだね お疲れ様 釣れて良かったね おめでとう
- 377 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:46:29 ]
- >>372
普通に起こるだろ。 シグナルだって入るし、場合によっちゃスレッドだってスイッチする。
- 378 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:08:33 ]
- >>372
I/Oだったら普通にキューにぶっこんでコンテキストスイッチしないかな?
- 379 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:28:02 ]
- Winsockでconnect、send、recvそれぞれに個別のタイムアウト値を持たせたいのですが、
connectのみ WSAWaitForMultipleEventsでタイムアウトを判断して send、recvはsetsockoptを使って指定、 これで大丈夫でしょうか?
- 380 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 08:52:26 ]
- 今の今までスレタイがtypoだと思ってた俺愕然。
- 381 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 09:58:45 ]
- 65535まで続くよ!
- 382 名前:355 mailto:sage [2008/06/17(火) 10:05:16 ]
- >>367
シングルスレッドの場合でしょ、それは絶対にあり得ないと思うんだけど。 最近のカーネルは、カーネルプリエンプションだから、カーネル内部の処理 実行中にコンテキストスイッチすることもあるかも知れないけど、 ロジックの実行順序(逐次処理)が入れ替わることはないと思います。 >>373 それとはまた別の話ではないでしょうか。 sendを呼んだひとはブロックされるでしょうが、他のプロセスは 普通にシステムコールを実行することも、ユーザーランドのロジックも 実行できると思います。 >>374 私もそういう認識です。 TCPで1つのスレッドが送信した場合であれば、sendした順に相手側では recv出来ると思ってます。(何回recvすれば良いかは判らんけど。) 途中でパケロスしたり、物理的に線が切れたりした場合は、受信側に届いた 部分まで(これも、相手がsendした順)が受信出来る。 なにか間違ってます? >> all
- 383 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:49:35 ]
- >>479
- 384 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 17:04:56 ]
- >>379
- 385 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 17:14:26 ]
- >>579
- 386 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 17:23:55 ]
- getaddrinfoはブロッキングを起こしますか?
- 387 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 17:54:23 ]
- AI_NUMERIC を付けない場合は起こします
- 388 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:07:41 ]
- LAN接続PC間で、低速、高ping回線の環境を再現するにはどのような方法があるでしょうか?
自作の俺プロトコルアプリが低速回線環境でどういった影響を受けるのか調べたいのですが。 環境はWindowsです(98orXP)
- 389 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:19:43 ]
- そういうソフト使えばいいだろ。
- 390 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:50:44 ]
- >>367
TCPでそれがあったら大変だろ UDPでは十分ありうるだろうが UDPは順序がかわるどころか 複製されたりもするらしいからな しかしUDPって順序も保障されてないとなると 1パケットあたりの情報をどうやって認識するんだろうか 区切り文字やらパケットサイズ送っても 順序がかわったりしたらアウトだよな?
- 391 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:41:21 ]
- このスレに出入りする奴の発言とは思えんな。
- 392 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 21:56:19 ]
- UDPは来るか来ないかだけで、「パケット」という構造自体は保証されるだろ。
2つ以上のパケットをもってきて、その関連をどうこういうと面倒だけど。
- 393 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 09:28:59 ]
- UDPで順序が変わるってのはわかります。
例えば、 (1)udp_send("ABCD"); (2)udp_send("abcd"); とした場合、(1)で作成されたUDPパケットが相手HOSTに到達 するルートと、(2)で作成されたUDPパケットが相手HOSTに到達 するルートが同じだとは限らないですよね。 たまたま、(2)のUDPパケットが相手HOSTに到達するルートの方が 速い回線だったりした場合、受信側のHOSTでは、(2)(1)の順に UDPパケットを受信する事もあり得ます。 UDPパケット毎の順序は不定ですが、複数のUDPパケットが混ざる 事はありません。(シングルスレッドの場合) で、複製されるってのはどういう意味?
- 394 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:14:46 ]
- udp_send("ABCD");
とかが2回以上あったかのように 複数回届くことかと思われ で、実際そういうことがある パケットにインデックスとかつけて 2回目以降のやつは棄てればいいので問題ない
- 395 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:22:56 ]
- >>394
それって UDP側じゃなくて MAC側の仕様じゃないの? 結果は同じだけど・・・ 細かすぎるか?w
- 396 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:48:55 ]
- UDPパケットがネットワーク上で消失するってのは判るんですが、
重複するってのはなぜ? 誰がパケットを複製するの? マルチキャストであればルータがパケットを複製するってのは 判るんですが。
- 397 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:59:51 ]
- 論理的にはあり得ないけど、ハードやOS側が腐っている場合は、
勝手に複製されてしまうこともあるって事ですか。 man ping より 重複パケットと障害パケット ping ユーティリティは重複パケットと障害パケットを報告します。重複パケット はユニキャストアドレスに対しては起こるはずのないものですが、リンク層での 不適切な再送信によって引き起こされるようです。重複は様々な状況で起こる可 能性があります。低いレベルの重複の存在は必ずしも警告にならないかもしれま せんが、よい兆候ではありません。ブロードキャストもしくはマルチキャストア ドレスに ping する時には、重複が起こることが期待されます。実際に重複する のではなく、異ったホストから同じ要求に対して応答が行われからです。 障害を受けたパケットは明らかに重大な警告です。多くの場合、ping パケットの 経路のどこか (ネットワーク内かホスト内) のハードウェアの故障が考えられま す。
- 398 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:03:13 ]
- よって、パケットの複製は、UDPだから発生するとかって話では
ないってことですね。 ただ、TCPだと、勝手に捨ててくれるけど、UDPだとそのまま 複数回受信しますということね。 と、なっとくしました。 考え方が間違ってたら、指摘してもらえると嬉しいです。
|

|