ページ 1 / 1
ネットワークプログラミング
Posted: 2010年11月30日(火) 01:04
by レムレス
Windows環境でWinsockを使用してネットワークプログラミングを最近勉強してます。
現在作成したのが
・チャット
・スレッド式掲示板のスレッドをリアルタイムで監視し新しいスレッドが立てられたら音を鳴らして教えてくれるもの
・パケットキャプチャ
・FTP接続(ダウンロード、アップロード、フォルダ作成など)
このくらいです。
なにか他に面白いものを作成したいのですが、ネタがありません。
なにか面白いソフト(ツール)などありませんか?
使用コンパイラはVC++2010です。
WinAPIもたまに使用しますがGUIソフトは作りません。
いつもCUIだけで楽しんでます。
Re: ネットワークプログラミング
Posted: 2010年11月30日(火) 02:38
by bitter_fox
レムレス さんが書きました:
なにか他に面白いものを作成したいのですが、ネタがありません。
なにか面白いソフト(ツール)などありませんか?
どの程度の難易度が適切なのかわかりませんが、Pingプログラムなどどうでしょうか??
http://ruffnex.oc.to/kenji/xrea/text_ping.txt
簡単すぎでしょうか??
Re: ネットワークプログラミング
Posted: 2010年11月30日(火) 11:23
by へろりくしょん
そこまで作れるんでしたら、次はやっぱりリモートツールじゃないでしょうか。
私も以前作った事がありますが、たちの悪いトロイになってしまいました。
他の人が作ったのを見ると、結構便利だったりするんですよね。
Re: ネットワークプログラミング
Posted: 2010年11月30日(火) 14:22
by レムレス
bitter_fox さんが書きました:
どの程度の難易度が適切なのかわかりませんが、Pingプログラムなどどうでしょうか??
すみません>_<
既に作成済みでした。
書き忘れてしまいました。
Re: ネットワークプログラミング
Posted: 2010年11月30日(火) 14:26
by レムレス
へろり さんが書きました:そこまで作れるんでしたら、次はやっぱりリモートツールじゃないでしょうか。
私も以前作った事がありますが、たちの悪いトロイになってしまいました。
他の人が作ったのを見ると、結構便利だったりするんですよね。
リモートツールですか。
面白そうですね。
たぶん一般的には作り方とか載ってないような気がするのですが
どういう仕組みなのでしょうか?
一応ざっと考えてみたのが
1.サーバを相手に送る
2.自分のクライアントからコマンドを送る。
3.サーバが送られてきたコマンドを処理する。
という処理なのですが、コマンドはsystem関数で処理することにして、
それだとリモートで操作できる範囲が限られてくると思います。
マウスコントロールとかもしたいですよね?
そのあたりどうすればいいのでしょうか?
Re: ネットワークプログラミング
Posted: 2010年11月30日(火) 17:04
by shiro4ao
CUIリモートツールであれば、
1.サーバーが接続を待つ
2.telnetクライアントで接続
3.接続がきたらサーバーはcmd.exeをCreateProcess()する
4.このとき標準出入力をCreatePipe()でソケットに繋ぐ
これでクライアントからのデータがcmd.exeの標準入力
にはいる
5.さらにcmd.exeの標準出力があればクライアントへ送信
するスレッドを走らす。
6.これでクライアントからのコマンドを受け、その結果を
クライアントに送るプログラムが出来るはずです。
もうひとつの方法として、標準出入力の引数をソケットに
してCreateProcess()するという方法でもできると思います。
GUIリモートツールであれば、
RFBプロトコル(実装例:VNC)を使うという方法がありま
すが,サンプルとして作るのは大変そうなので、画像を一定
時間ごとにキャプチャしてクライアントに送るプログラム
などはいかかでしょうか?
マウスコントロールについては位置はWM_MOUSEMOVEを
調べる。移動については mouse_event()をもいちること
で可能かと思います。(SendInput()のほうがおすすめのよ
うですが)
Re: ネットワークプログラミング
Posted: 2010年12月01日(水) 10:16
by へろりくしょん
レムレス さんが書きました:一応ざっと考えてみたのが
1.サーバを相手に送る
2.自分のクライアントからコマンドを送る。
3.サーバが送られてきたコマンドを処理する。
という処理なのですが、コマンドはsystem関数で処理することにして、
それだとリモートで操作できる範囲が限られてくると思います。
マウスコントロールとかもしたいですよね?
そのあたりどうすればいいのでしょうか?
マウスコントロールは、クライアント側でマウスメッセージをフックするなり、キャプチャーするなりして、捕まえたメッセージをサーバ側に送りつける事で実装できそうです。
ただ、これって、サーバ側の画面をクライアント側に送り続けなければ使い物になりそうにないですね。 それも1秒間に数回程度は更新してほしいものです。
1680x1050 の 24bit カラーでざっと5MBちょい(非圧縮BMP)です。 ちょっと厳しいですね。