>>909 そしてまた嘘言うな
javaは含まれてねーですよ
>>910 つ 一応VC7行こうでもネイティブを吐けるので、もしかしたら吐き出したEXE動くかもしれない
が、開発環境は無理だな
そして質問は開発環境っぽいので
>>910が真
VC8のEXEはWin95で動かんよ。
914 :
デフォルトの名無しさん:2006/09/30(土) 18:51:10
ネットワークプログラミング固有の話でもないんですが質問です。
今とあるプロトコルを作ってるのですが、
NAME1
NAME2
NAME3
と任意の数の任意の文字列を伝える場合、
どういう形式で送るのが好ましいでしょうか?
最初は、 ,や#や~で区切る方向だったんですが、それだと文字列にそれらの文字が使えなくなりますし・・・
それにこの文字列には改行コードが含まれる事もあるので、それも使えません。
コマンドの先頭にオフセットを付加する事も検討しているのですが、一般的にはこういうのはどういう手段で解決しているのでしょうか?
>>914 Cだって\を表示したいときは\\だろ?
・hex dump
・string length
・escape sequence (SMTPの.行など)
・XML
・BER
>>914 とりあえずHTTPでのヘッダやフィールドなんかはまんま送ってるよな
あれは内部で特殊文字をエスケープしたりしてるはず
というわけで、
> 最初は、 ,や#や~で区切る方向だったんですが、それだと文字列にそれらの文字が使えなくなりますし・・・
> それにこの文字列には改行コードが含まれる事もあるので、それも使えません。
は送れるし、改行コードだって使える
表記と意味をもう少し考えよう
もう一つは「送るサイズ」とデータをまとめて送る方法だが、
まぁその”サイズ”とやらをどうやって表現するかとか、送るサイズは決まってないけどとりあえず送りたいときなんかは
無駄な表現になるかもしれない
とりあえず時と場合による
>>915 > \を表示したいときは
< \をデータに含めたいときは
文字リテラル('\\')もそう。
ちなみに、printfは、\\を見て\を出力ということはやってない。
%と\を混同している人が多いが。printfの書式指定は%。
改行処理は書式文字列に埋め込まれた改行コードを出力しているだけ。
ちと誤解があるようなので。
OSはWin95も使ってますが、
MS-DOS6.2、7.0,Windows3.1,Wi95、Win98SE、
Win2000、WinXP Pro, SunOS、ソラリス
以上を現用です。
昔は、H8350、VAX11、MDS(86)、CBM-3032なんてのも
マンセーしました。
それだけ使った事あって、ネットワークのプログラムを作った事ないなんて、なにが楽しかったの?
ちょっと使うためとかで自作プロトコルを作るときって、
バッファとかでガバッてやると、終了とかサイズとかの処理が面倒だし
やっぱり1バイトづつ(とか先読みとか)読み取って処理するのが一番楽だよね?
>>911 909はJ#とJavaの区別が付いてないんだな
>>923 そこまで決めちゃうプロトコルなの?
実装の話は抜かして進めないと先がどんどん見えなくなっていくよ
>>925 やるなら、1バイト(もしくは数バイト)ごとがいいとか、
そういう話じゃないのか?
>>923 TLVのマーシャリング、アンマーシャリングを行う汎用クラスを作っといて、
I/Oはそいつに任せる。
個別のプログラムは、TLVの意味解釈のみ。
>>927それだと結局は既存の使ったほうが楽じゃないか?
>>928 新しいプロトコル作るまでは話が進んでいるんだから、
そっちに後戻りするのはちょっと受け入れられない条件なんじゃまいか?
(最悪"TCPがあるじゃん!"に落ち着いてHTTPもSMTPもTCPに含まれちゃうことになっちゃうぞ)
とりあえず俺も今シコシコやってるから反論してみた、反省はしていない
滑らかにバッファのカーソルをずらす上手い方法ないかな?
あるプロトコルの命令句を取り出したら、余ったバッファの値を
バッファの先頭に持って行きたいんだよね。
同じサイズのバッファを沢山プールして、フリーのバッファにmemcpyとかしかない?
今の学生さんは普通にインターネット使って
普通にパソコンのキーを叩いてますし、
ネットワークプログラミングもナラってます。
たわしが学生時代は大型計算機全盛で、
MSもMS-DOSも影も形もなく
ネットワークはおろかパソコン通信もなかったんですわ。
1980年代前半にはMSはもうバリバリだったし、MS-DOSも発売されてた。
一体何歳の人?
結局1バイトずつが楽なんじゃないか!
何でそんなにバッファとか面倒なことにこだわるんだ?
特に
>>929 >>930に言いたい!
負荷を軽くするためだろ
>>934 そんなこといわれてもなー
プロトコルにかんけいないしー
プロトコルに関係ある話って具体的には何?
1)1バイトずつ読んで解釈する部分と、
2)まとめて読み込んで1)に1バイトずつ返す部分、
の2つに分ければよろし。
だよね。
>>933 最初のMS-DOSはNECのPC-100で使った。
会社だから買えたけど100万円もしたんじゃ
とても個人じゃMS-DOS機は買えんかった。
DOS無しでも研究のオリジナル8086オリジナル機
で画像認識処理を研究しとったよ。
メインフレームと連携させてよ。
VAXマシンやTSSはケーブルでは
多数つながっていたが、LANではなくて
チャネルという呼び方をしてた。
当時はOSIレイヤが7層構造で・・・
みたいなお堅い空論だけが論文に
出てたが実験段階で製品レベルでは
なかった。
>>940 この人の歴史がそのまま計算機の歴史なのか…
HPとかブログで思い出話つづってくれると、とってもいいかも。
博物館とかで昔の人の知恵を見るの好きなので・…
>>942 まあ今でこそネットワーク花盛りだけど
いろいろみんなの努力があって現在があると思ってますよ。
主にハード制御と基板設計だったけど、
今ではハックされないSSLプログラミング実装と
FPGAのVHDLでも頑張ってるよ。
何なのこの人
>>946 ソフトとハードいぢってる人なんじゃね?
うざ
久々の休みで、くつろいでるんだけど?
無知で若くていいなってね。
今だ現役で、現場でバリバリで、こんなスレまでチェックして、
年取っていても、おまえらよりも好奇心は数倍上なんじゃ!
お前ら、頭下げんか!!
既に壮年と呼ばれる年齢に達して、一部ハゲてる俺がきましたよ
とりあえず
>>949は俺に頭下げろ
俺60歳だけど。
みんな俺に平伏せ。
年功序列って言葉も昔はあったよね。
何もかもが懐かしい。俺25。
制御にいく、ソフト(今だとWeb)に行くか迷うよな。
プログラマ板行けよ
ソケットをcloseした直後に、そこ宛に届いたパケットって、どうなるの?
ソケットバッファはcloseした際にfreeされるんだろうけど、そのもっと下のレイヤーの
中の人達は、そのパケットをどう処理するの?
>>956 Socketライブラリの話をしてるなら
その前にshutdown()があるだろ?
そっちを参照しれ
>>956 FAQ読め。half closedとか。
>>914 遅レスだが
,で区切るなら
まず全ての,に,を追加する
つまり,や,,,は、,,とか,,,,,とかになるわけ。
あとは,でマッチするヤツで分離
処理後は,を1つ減らす。
多分それだと、
,
,
,
な項目が出た時に判別方法ナスw
まぁ、n/2出来るかどうかで後からつけたかどうかは判別できるかな
スマートな方法ではないが・・・。