- 1 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 21:07:24 ]
- 主にソケットに関しての質疑応答スレッドです。
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辺り 足りなかったら適当に付け足してね 前スレ ネットワークプログラミング相談室 Port22 pc11.2ch.net/test/read.cgi/tech/1222603744/ 関連スレ Java ネットワークプログラミング 【教えて!】 pc11.2ch.net/test/read.cgi/tech/1086238859/
- 175 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 11:13:02 ]
- 中間者攻撃というのがあってだな…。
昔P2Pで適当なループ作って署名付けて二回回すってのを考えたけど 結論覚えてないや(w
- 176 名前:175 mailto:sage [2009/01/22(木) 11:14:40 ]
- 思い出した。↑の方法でも中間者攻撃対策にはならないんだった。
- 177 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 11:25:02 ]
- 正規のクライアントがクラックされてクローンを作られるのは防ぎようがないかな。
どうしても防ぎたければB-CASカードみたいな対タンパ性のあるハードウェアを 使うとか。
- 178 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 19:16:30 ]
- >>168
ここで答え出てるだろ。 クライアントでランダムな非対称鍵作って 暗号化用の鍵を相手に渡す。
- 179 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 21:43:51 ]
- MMOみたいな延滞厳禁な物に対して
暗号化を施すのも正直どうかと思うけどな
- 180 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 22:00:40 ]
- 暗号化コストなんて送受信に比べたらカスみたいなもんだろ
- 181 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 23:33:12 ]
- 共通鍵にしろ公開鍵にしろ
強度を高めようとしたら結構負荷がかかるぞ そもそも暗号と高速化は相反する物だし
- 182 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:01:21 ]
- 暗号化コストは結構でかいよ。
LANでギガビットイーサ+SSHだとネットの性能に暗号処理がおいつかない。 性能が必要ならストリーム暗号かね。
- 183 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 11:36:09 ]
- お前は一体何の話をしてるんだ
- 184 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 17:20:28 ]
- MMOでクライアントからサーバーに巨大なデータは送らない。
- 185 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 17:20:09 ]
- UDPの受信で到着順番が入れ替わる対応をするため
受信データにシーケンシャルなインデックスを入れて 受信時にソートするとする。 その場合、処理してしまったデータより前のデータが飛んできた時の処理って 仕様によるとは思うんだけど、どうするのがいいかな? やっぱ捨てるの?
- 186 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 18:34:50 ]
- 必要なら取り込む、不要なら捨てる
- 187 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:42:57 ]
- 185が自分で言っているように仕様によるとしか言えない。
- 188 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:31:10 ]
- やっぱそうだよなー
でもせっかく届いたデータを捨てるのも勿体無い気がする・・・ 設計自体を変えるしかなさそうだな。 色々試してみるお、ありがと。
- 189 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:38:41 ]
- そこを頑張り過ぎるといつのまにか劣化TCPを作るハメになるぞ
- 190 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:50:27 ]
- 分散コンピューティング環境では思い切りが必要。
- 191 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 14:46:45 ]
- 迷ったら、TCPを使わない理由を考えなしたほうがいい
- 192 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:02:47 ]
- 意味判らんが
UDPの方がプログラマ寄りの考え方だぞ
- 193 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:24:03 ]
- それこそ意味がわからん。
- 194 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:27:12 ]
- プログラマ寄り?
- 195 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:51:09 ]
- まあ生パケットに近い (=プログラマの裁量範囲が大きい) と
言いたかったのではないかとエスパーしてみる。
- 196 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:08:06 ]
- じゃあアセンブラで書けよ。
- 197 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:30:12 ]
- また意味わからん奴が出てきたぞ
- 198 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 08:55:02 ]
- TCPとUDP、この2つで十分というのはおもしろいと思う
- 199 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 11:31:29 ]
- 十分じゃないからその上の層にも下の層にもプロトコルがあるんだろうが。
tracerouteコマンドのように下の層を直接使うアプリもあるし。
- 200 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 20:28:26 ]
- ネットワークプログラミングに興味を持って始めてみようと思うのですが、
Windowsではwinsockが主流なのでしょうか? 長らく更新されていないようですけど、それだけ完成度が高いということですか?
- 201 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 21:30:45 ]
- うん
- 202 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 21:38:43 ]
- HTTPリクエストだけならWininetAPIの方が楽ちん
- 203 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 22:09:07 ]
- Winsock以外のプロトコルスタックの実装もあるにはあるけど、実際に使われてるのを
最近は見たことない。Winsockで十分だからね。
- 204 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 22:30:39 ]
- なんか意外な気もしますが普通に現役なんですね
取っ掛かりは簡単そうだし、少しやってみようと思います
- 205 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 22:34:01 ]
- ptrace(2)を使うのはほとんどのUNIXでお勧めではない。
詳しくはmanpageを読んでくれ。
- 206 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 03:58:49 ]
- ふつ〜straceだよね
- 207 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 09:08:04 ]
- tracerouteは
UDPを投げてICMPの戻りを使うタイプのものと ICMPを投げてICMPの戻りを使うものがある この理解であってる?
- 208 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:05:03 ]
- あってる。
Linuxには-Iオプションとかもあるな。
- 209 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:21:46 ]
- ちょっと引くぐらいくだらない質問だと思いますが、教えてください。
TCPやUDPなどにはヘッダの構造が定義されていますが、 ポートからヘッダの構造に従ったパケットを送信しさえすれば 後はヘッダに定義したあて先にパケットが届くということでいいのでしょうか? つまり、大雑把にいうとヘッダ構造にしたがってパケットを送信できれば 一応イーサネットの通信はできるという認識はあっているでしょうか。 (品質やエラー処理などは考慮しないとして)
- 210 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:45:01 ]
- そこいうポートって?
- 211 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:47:25 ]
- 「で」が抜けた
- 212 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:49:15 ]
- あ、すいません。
書き方が悪かったです。 ここでのポートは、組込み開発のボード上にある 物理的なLANポートのことです。
- 213 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:01:21 ]
- >>209
恐らくネットワークの下層の存在を知らないんじゃないかな? TCP, UDP, IPまでは物理的な通信ハードウェアとは隔離されたレベルの 通信規格。 その下層にあるデータリンク層がLANの場合ならIPアドレスから イーサネットのアドレスへの変換、イーサネットヘッダーの追加、 イーサネットチェックサムの計算等をやってくれている。 ここの規格はネットワーク技術によって異なる。 他に 身近なものではwifiとかDSLで使われるPPPoEとか。 で、さらにその下の物理層が具体的な電気信号への変換を行う。
- 214 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:11:50 ]
- >>209
ファーム支援が何もない状態って事だよね? ARPをちゃんと理解しないと、 イーサネット上でIPパケットを出すことは難しいよ。 ルーティングの知識もいる。 > その下層にあるデータリンク層がLANの場合なら ルータの裏蓋程度の中途半端な知識で語るのやめれ
- 215 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:12:12 ]
- >>213
そういうことですか・・・少し理解が進みました。 ありがとうございます。 昨日からあるボードのイーサネットのソース解析を 行っているのですが、まったく知識がない状態で 解析しているので何が何だかわかっていないのです。 確かにソース上で、MACアドレスの取得(ARP?)を行ったり、 イーサネットヘッダの追加やチェックサムの計算を行っていました。 要はその部分がデータリンク層の実装ということですね。 ということは、データリンク層までを実装して そのパケットをLANポートから送信してあげれば イーサネット通信ができるということでいいでしょうか。 ・・・もうソースを見ても何が何だかという感じです。 多少取っ掛かりはみえてきましたが。
- 216 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:16:08 ]
- >>214
そのファームの移植・・・という作業なのです。 (CPUが異なるボードへの移植です) 私はペーペーなので勉強も踏まえてという位置づけなのですが、 できるところまでやってみろという感じで 何とかやり遂げないとまずい状態にいます。 ちょっと憂鬱です。
- 217 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:20:12 ]
- >>3の本は読まないとね。
- 218 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:36:20 ]
- >>215-216
WireShark とかインストールして、ネットワーク上のパケット 見れば理解が少しはすすもかも。 どうせ、デバッグ段階でお世話になるだろうし。
- 219 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:37:35 ]
- 移植するのに上位層から眺めてたら、わけわかめになるんじゃないの?
- 220 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 01:12:00 ]
- >>214
一応ルーターベンダでルータのコードいじってた。 IP, ルーティングが主専門だったが 時々データリンクもいじったし、ブートROMを新しいハードに移植もしたことある。 >>215 >ということは、データリンク層までを実装して >そのパケットをLANポートから送信してあげれば まだまだ。 データリンク層は下層の通信技術によって異なるが、これも 標準で定義された規格を実装しているハードウェア非依存のコード。 コンパイルすればいいだけで「移植」は必要ないはず。 移植が必要なのはその下のMAC層。 ここがイーサネットポートのチップと 実際にやりとりをする。
- 221 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 01:15:50 ]
- 「データリンク層がLAN」とか良く言えるなw
- 222 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 01:19:58 ]
- >>220
- 223 名前:213 mailto:sage [2009/01/30(金) 02:55:55 ]
- >>221
かなり変だったね。 スマン。 単に「イーサネットのLANの場合、データリンク層は」と 言いたいのが言葉が絡まってしまった。 >>219 普通は最下層からも攻めますよね。 デバッグビルドでドライバの最下層の ルーチンを独立に叩いてチップのレジスタを表示したり設定するデバッグコマンドを いじりながらまずチップが叩ける様にするというのが常套手段でしょうか。
- 224 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 03:10:24 ]
- >>223
そういうやり方もありかと あと、TCPで使うタイマーをどうするかぐらい? ハードに依存した部分がソースで分離されてれば楽だろうね。 209は自分のMACアドレスとかどうするつもり何だろう?
- 225 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:07:47 ]
- >>218
今日はEtherealを使ってパケットのやり取りをみてみました(ARPだけですが) 確かに理解は進んで、イメージがつかめてきました。 >>219 ・・・うーんそうですね。まだ解析方法自体へたくそなんだと思います。 >>220 BootROMを新しいハードに移植! まさに今私がやらなければならない作業です。 初めての開発作業で、しかもファームの開発なので デバッグもままなりません。やりがいはありますが・・・。 >移植が必要なのはその下のMAC層。 このキーワードが解析・移植作業のヒントになりそうです。 根元の部分のみ置き換えてやればいいんですね。 今日先輩にも同じようなことをいわれました。 >>224 いえ自分のMACアドレスというわけではなく、 ARPで宛先のMACアドレスを取得したかっただけです。 皆さん色々と助言をありがとうございます。 まだ来週からは、パケットの送受信をハードがどう行っているかの解析や TCP/IPやらUDPやらその他もろもろの解析が続くので 苦労の日々は続きそうです。 また何かあれば相談させていただくかもしれませんが、 よろしくお願いします。
- 226 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:24:38 ]
- なぜいまさらEtherealなの?最新のWiresharkにしときなさい。
- 227 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 02:00:22 ]
- >まだ来週からは、パケットの送受信をハードがどう行っているかの解析や
>TCP/IPやらUDPやらその他もろもろの解析が続くので そういうのは文献見りゃ分かるんだから解析とは言わない
- 228 名前:779 [2009/01/31(土) 12:40:14 ]
- WinSockでデスクトップイメージの通信を行っていますが、
クライアントの接続を切ったとたんに、サーバーが異常終了して しまいます。原因がわかりませんか? uproda11.2ch-library.com/src/11154199.zip.shtml お願いします。
- 229 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:54:42 ]
- コードを流し見しただけだが
ソケット関係は入出力を含めてエラー処理が甘すぎ
- 230 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 13:13:07 ]
- 何も見てないがWinSockのせいじゃないぞ
- 231 名前:デフォルトの名無しさん [2009/02/01(日) 13:00:01 ]
- >>230
何のせいですか?
- 232 名前:デフォルトの名無しさん [2009/02/01(日) 13:12:27 ]
- >>229-230
例外を処理していないのが原因だったようです。 ありがとうございました。
- 233 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 13:19:05 ]
- server側のFD_CLOSEにトラップしかけてトレースしたらすぐ分かるでしょ
- 234 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 16:26:44 ]
- >>228
Backdoor....ヒィーーーーッ、ガクガクブルブル
- 235 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:23:23 ]
- やべっ
落として実行しちゃったけどBackdoor仕掛けられちゃったか・・・ (
- 236 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:40:15 ]
- ご愁傷様です
- 237 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:51:01 ]
- 落としてる途中で
怪しいと思ったので 放置してたんだけど やっぱそうなん?
- 238 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:52:39 ]
- あっぶね
落したけど実効はしてない
- 239 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:20:37 ]
- UDPのソケットを作成してbind後に
どこかのアドレスにsendtoすると selectでreadfdsが反応しちゃうんだけど そゆもの? なんで自分が受信可能になるの?
- 240 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:21:47 ]
- ちゃんとselect用のsocket分けてますか
- 241 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:48:30 ]
- ソケットは1つしか作成していません。
そのソケットをbindしてselectにセットしています。 さらにそのソケットでsendtoしてるんだけど、 それがまずいってことですか?
- 242 名前:239 mailto:sage [2009/02/01(日) 23:25:56 ]
- すいません、送信アドレスが127.0.0.でしたorz
申し訳ないです、忘れて下さい(´・ω・`)
- 243 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 23:58:27 ]
- 。゜(゚´Д`゚)ノウンコ-
- 244 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:11:28 ]
- タヒぬ
- 245 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 02:12:56 ]
- >>228を落としてウィルススキャンして見たんだが反応しない
バックドアってどうしたら発見できるの?
- 246 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 03:04:46 ]
- 作っているアプリの名前がbackdoor?
- 247 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 06:21:16 ]
- デスクトップイメージを送信している
それだけでbackdoorと言っても差し支えない
- 248 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 01:11:56 ]
- >すいません、送信アドレスが127.0.0.でしたorz
ワラタ
- 249 名前:デフォルトの名無しさん [2009/02/03(火) 23:29:30 ]
- LinuxでIPアドレスが分かっているLAN内の他のホストのMACアドレスを知るプログラムを作りたいのですがどうすればいいですか?
できれば、他のプロセス(arpコマンドなど)は起動せず、 標準的な(apt-getせずにubuntuで使える)関数で簡単に数行で記述出来ると望ましいです。
- 250 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:34:48 ]
- なんでping→arp -aがだめなの?
- 251 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:53:07 ]
- ARPパケットの送信と受信がしたいのでは?
- 252 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:34:10 ]
- arp -a
一行
- 253 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:50:26 ]
- ttp://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.commtechref/doc/commtrf2/arpresolve_common.htm
ttp://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.commtechref/doc/commtrf2/arpupdate.htm
- 254 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 12:40:11 ]
- >>249
arpのソースをリンクすればいいんじゃないか?
- 255 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 13:27:29 ]
- >>254
ライセンス関連であまり悩みたくないので他のプログラムのソースを取り込むのは避けたいです。 できればarp()やget_remote_mac()のようなAPIがあれば嬉しいのですが。
- 256 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 13:29:23 ]
- >>253
ありがとうございます。参考にします。
- 257 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 13:30:26 ]
- >>250
他のプロセスを起動したくないからです。
- 258 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 13:40:19 ]
- 注文が多いのう
- 259 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:18:33 ]
- >>255
つ www.netlib.org/
- 260 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:20:51 ]
- >>259
あ、逆だった。 こっちだ orz www.packetfactory.net/libnet/
- 261 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:38:43 ]
- >>257
Linux前提なら /proc/net/arp 読めばいいんじゃね? arpコマンドだってこれ読んでるだけだよ。 キャッシュにないときの処理は後自分で考えるんだぞ。
- 262 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:49:06 ]
- キャッシュについては
ていうかpingも自分で実装?
- 263 名前:デフォルトの名無しさん [2009/02/04(水) 23:54:13 ]
- >>260
ありがとうございます。 やっぱり標準装備のライブラリじゃできないですかね。。 導入するならこれかlibpcapかな。
- 264 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:55:38 ]
- >>262
いや、接続しようとするだけで問題なし。 出来なくてもARPは行われるから。
- 265 名前:デフォルトの名無しさん [2009/02/04(水) 23:56:02 ]
- >>261
ありがとうございます。 確かにそれはいいアイディアですね。 テキスト処理が若干面倒ですが。
- 266 名前:デフォルトの名無しさん [2009/02/04(水) 23:57:50 ]
- >>262
御存じのこととは思いますが、pingとarpキャッシュは直接関係ありませんよ。 pingがアドレス解決するのでその副作用でarpキャッシュが更新されるだけです。
- 267 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:34:42 ]
- >>264
確かにそれはいいアイディアですね。 自分でARP投げるのも出来ませんかね。
- 268 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:11:46 ]
- ttp://www.itbook.info/study/arp3.html
- 269 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:37:23 ]
- https://arco.esi.uclm.es/svn/public/misc/scapy/arping.py
- 270 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:45:25 ]
- ttp://www.secdev.org/projects/scapy/
ttp://www.secdev.org/projects/scapy/demo.html
- 271 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:45:39 ]
- >>267
こっちが聴きたい。「あなたは実装できないのですか?」
- 272 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:47:14 ]
- www.designandcommunication.co.jp/Python/packet.html
- 273 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:49:29 ]
- >>271
Cでは出来るけど >>249 の言うような >できれば、他のプロセス(arpコマンドなど)は起動せず、 >標準的な(apt-getせずにubuntuで使える)関数で簡単に数行で記述出来ると望ましいです。 「標準的な関数で簡単に数行で」って言われると 自分の関数リンクするのもアウトだろうから arp -a 以外に思いつかない
- 274 名前:デフォルトの名無しさん [2009/02/05(木) 22:55:44 ]
- ilab.cs.byu.edu/python/
heather.cs.ucdavis.edu/~matloff/Python/PyNet.pdf www.amazon.co.jp/Foundations-Python-Network-Programming/dp/1590593715 d.hatena.ne.jp/rintaromasuda/20060521/1148167342 www.onlamp.com/pub/a/python/2006/08/10/untwisting-python-network-programming.html simonwillison.net/2004/Feb/18/advanced/
- 275 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:27:45 ]
- under Linux only
import sys import string import struct from socket import * proto = 0x55aa s = socket(AF_PACKET, SOCK_RAW, proto) s.bind(('eth1', proto)) ifName, ifProto, pktType, hwType, hwAddr = s.getsockname() srcAddr = hwAddr dstAddr = '\x01\x02\x03\x04\x05\x06' ethData = 'here is some data for an ethernet packet' txFrame = struct.pack('!6s6sh', dstAddr, srcAddr, proto) + ethData print 'Tx[%d]: ' % len(ethData) + string.join(['%02x' % ord(b) for b in ethData], ' ') s.send(txFrame) rxFrame = s.recv(2048) dstAddr, srcAddr, proto = struct.unpack('!6s6sh', rxFrame[:14]) ethData = rxFrame[14:] print 'Rx[%d]: ' % len(ethData) + string.join(['%02x' % ord(b) for b in ethData], ' ') s.close()
|

|