[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 03/16 02:36 / Filesize : 99 KB / Number-of Response : 399
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ネットワークプログラミング相談室 Port21



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/

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 ]
俺はパート長は入れるね






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<99KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef