Introduction

ブログ内検索

  • このサイトの記事を検索 by Google

おすすめの一冊!

無料ブログはココログ

« *OBSOLETED* | トップページ | バイクスタンドを買っちゃいました »

2005-09-28

JScript .NET での Socket 通信

JScript (Microsoft 版 Javascript+α) の Socket 通信がちょっとだけ理解できました.

趙 森 〔著〕: Visual C#.net ではじめる TCP ネットワークプログラミング例の「JScript 版 IP Messanger を作ろう」計画では JScript .NET で
IP Messanger プロトコル処理をやるつもりなのですが,
その第一歩とも言える Socket 通信で苦戦してました.
ネットをあさっても見つからず(JScript の貴重な情報はゲット),
近所の本屋で見つけた本(思わず買ってしまった…)でもわからず,
結局,MSDN の「JScript のデータ型」を読みなおして判明…

JScript .NET には byte 型ってのがあって(JScript ハンドブックには
見当たらず…),これが .NET の System.Byte 型に対応してるらしく,
byte[] 引数としてこの型の配列が使えるとのことでした.

ただし,実際に試してみると,注意すべき点がいくつかありました.

  ・byte[] 型と System.Array.CreateInstance(byte, ***) の返値は異なる.
   これを間違えても warning が出るだけで動いてしまう.

  ・"var bb = byte[8]" は誤りで,"var bb = new byte[8]" が正解(new が要る).
   これはコンパイルエラーになるのでわかりやすい.

  ・byte[] 型を引数にとる関数に Array 型を渡すと「値渡し」になる.
   つまり,渡したつもりの Array 型の領域を更新してくれない.
   一応,コンパイル時に warning は出るのだが,意味がわからなかった…

というわけで,とりあえず,System.Net.Sockets.TcpListener を使った
TCP サーバ(おもちゃ)は動くようになりました.

ちなみに,telnet コマンドを使ったサーバのデバッグは便利ですね.
# 今日買った本で知りました(というか思い出しました).
# UNIX 系の人には当たり前のテクニックかもしれません…

p.s. やっぱり型付けの弱い言語はツライですね(くじけそう…).

« *OBSOLETED* | トップページ | バイクスタンドを買っちゃいました »