912 :
デフォルトの名無しさん:02/09/16 21:37
System.Net.Sockets.NetworkStreamとか
System.Net.Sockets.Socketとかの送受信がbyte[]しかないんですが、
byte[]にパケット詰め込む場合ってC#ではどんな感じにするのが
推奨されてるんですかね。
俺は今までC++ではmemcpyでBYTEの配列にintやchar等必要な
データをくっつけてパケットを作ってたんですが、
int->byte[]やstring->byte[]にうまいことコンバート(シリアライズ?)
するクラスとか関数があれば教えてください。
>>912 BinaryReader、BinaryWriterでNetworkStreamをラップしてやるのがよろしいかと。
>>913 ギニャー!
ありがとうございました。
(このスレsageで進行してたんすね。あげちゃってすんません)
これってやっぱuintのデータ入れる場合とかは
htonsとかhtonlとかは自分でやんなきゃいけないんすかねー。
まあそれはそれで自分で作るか。
>>914 IPAdress.HostToNetworkOrder
IPAddress.NetworkToHostOrder
しかし、センスが無いのはネがMSだからか。
>>915 ということでセンスのある名前を考えてあげてください
>>917 センスがあったら、漏れもこんなとこうろついてないよ。
でも、いくらなんでもIPAddressクラスで、しかもあの名前ってのは無いと思うよ。
static xxx System.Endian.ToBig(xxx);
static xxx System.Endian.ToLittle(xxx);
とかだったらどうだろ? Endianがクラス名。
あるいは、System.ByteOrderクラスでstatic xxx ReverseOrder(xxx);とか。
class Test と struct Test
文章にも書いてある
923 :
デフォルトの名無しさん:02/09/18 20:40
>911
自分はVS起動時に、IDEが表示されるのですが、
「ヘルプ更新を実行中」とダイアログが出た後に、
"問題が発生したため・・・"の例のダイアログがでて終了します。
一度、OS(Win2k)をクリーンインストールしてからやり直しましたが
同現象でした。念のために自宅のPCにてインストールを試みましたが一緒でした。
C#Standardはうまくいくんですが、VS.net(Enterprise)は駄目です。
仕事ではVB厨なので趣味なんですが。。。。。
あげてしまいました。。。。。
MSのサポート受ければ?
インスコは無料でしょ?
927 :
デフォルトの名無しさん:02/09/19 11:58
>>926 これって 一部のオフィスアプリでイベントがシンクできない問題解決されてるのかな?
2chツール゙を作ろうかと思うのですが2chへの認証ってどうするんですか?
Helpで通信云々を探しているですがイマイチ使用方法がわかりません。
ヒントお願いいたします。
933 :
デフォルトの名無しさん:02/09/19 16:36
webアプリケーションで質問です。
aspx内に書いたjavascriptで取得した値を
本体の方に送ることはできますか?
>>933 URLのパラメータにくっつけるとか、HIDDEN項目置いて値をセットするとか。
>>934 なるほど、ありがとうございます!
hiddenってpostでしたね
>>929 ms-help://MS.VSCC/MS.MSDNVS.1041/cpguide/html/cpconaccessinginternet.htm
>>936 感謝します。通信関係のプログラミングは初挑戦なもので
頑張ってみます。
939 :
デフォルトの名無しさん:02/09/20 08:11
そろそろ新スレ、どなたかおながいします。
>>941 ざっと見たところ、1.1 で追加、更新されるのは
・ASP.NET Mobile Controls (具体的にどの user agent 対応なのかな?)
・コードアクセスセキュリティ周り (漏れはこのへん良く理解して無い、ソマソ)
・ODBC と Oracle への Data Provier
・.NET Compact Framework
・IPv6 サポート
こんなところかな。
944 :
デフォルトの名無しさん:02/09/20 11:36
ひょっとしてVS.NETも新バージョンに買い換えなきゃ駄目なん?(;´Д`)
>944
SDK自体はロハだから問題なかろう。
ロハって何?
>>944 買い換えっていうか、ちゃんと登録してれば数千円でVS.NETのバージョンアップできるよ。
MSDNに入ってればタダ。
どういうわけか気づいたらVSの60日体験版が3枚くらいあるんだけど・・
これって売れない?よね・・
>>951 ヤフオクで売ってる奴いたなぁ。。。
2000円ぐらいの入札が付いてるの見たときワラタ
逆シリアル化について疑問があります。
// Container の逆シリアル化コンストラクタ
public Container( SerializationInfo info, StreamingContext context )
{
MessageBox.Show( "Begin deserializing Container" );
child = (Child)info.GetValue( "child", typeof(Child) ); // child はフィールド
MessageBox.Show( "End deserializing Container" );
MessageBox.Show( child.Data ); // 値がおかしい
}
// Child の逆シリアル化コンストラクタ
public Child( SerializationInfo info, StreamingContext context )
{
MessageBox.Show( "Deserializie Child" );
}
上記のようなコードで逆シリアル化を行ったとき、
Begin Container -> Child -> End Container
の順番で呼ばれると思ったら
Begin Container -> End Container -> Child でした。
Container のコンストラクタ内で child にアクセスすると未初期化の Child が入っていて、
Container のコンストラクタを抜けた後に Child のコンストラクタが呼ばれているようです。
いまいち動作に納得がいかないのですが、これに関するドキュメントなどご存知でしたら教えてください。
レスありがとうございます。
内側から外側に向かうと言うのはあくまで継承時の問題で、
コンテナよりもその所有してるオブジェクトのほうが早く復元されるとは限らないって事でしょうか。
常に IDeserializationCallback を使用したほうがよさそうですね。
2chに出てたサンプルをコピペしてコンパイラ実行し始めてから
インデントが全角空白だったことに気付き,置換してたら
コンパイル通っちゃった。びっくりした。
ビット演算子の優先順位が比較演算子より低いのがどうしても納得いかねぇ・・・
Cならともかく、C#じゃこうすることのメリットがまったくねぇじゃねぇかよ・・・
と
if ( (var&EnumType.Value)!=0 ) Hoge;
を書く度に思う俺
愚痴スマソ
Console.WriteLine("{0,2}", "ああ"); −> ”あ”
Console.WriteLine("{0,2}", "12"); −> ”12”
というような文字列操作ってないでしょうか?
>>960 全角を 2 バイト、半角を 1 バイトとして扱いたいっての?
そういうクラスを自分で作ってToStringをオーバーライドすればできるけど