C#簡易遠隔制御作成ソースプログラム及び構想(クライアント)
リモート制御のサーバ側では前述したように
http://blog.csdn.net/a112634313/article/details/7941446
クライアントの実装を開始します
クライアントの実装も簡単で、サーバとのsocket接続を実現し、サーバから送信されたメッセージを受信し、解析し、書き上げる方法を実行することがクライアントの実装原理です.
クライアントのインタフェースはとても簡単で、何もなくて、バックグラウンドで実行するソフトウェアなので、フロントのインタフェースはすべて余計で、プログラムで制御するだけでいいです.
どのようにフロントのインタフェースを隠すかについては、前に書いた文章を見て、フロントのインタフェースを隠します.
http://blog.csdn.net/a112634313/article/details/7939049
では、クライアントコードの実装を開始します.
まずサーバに接続するコードですが、これは欠かせません.
[csharp] view plain copy print ?
private Socket socket;///
/// 接続サーバ///
private void Conn() {
try {
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint ipPort = new IPEndPoint(IPAddress.Parse("192.168.0.200"), 6160);
socket.Connect(ipPort); Recevice();
} catch (Exception)
{ Thread.Sleep(10000);
Conn(); }
}
次に、サーバメッセージを受信する方法です.
[csharp] view plain copy print ?
////// サーバからのメッセージを受信
/// private void Recevice()
{ while (true)
{ byte[] byt = new byte[1024];
int length = socket.Receive(byt); string jsonStr = System.Text.Encoding.UTF8.GetString(byt);
jsonStr = RemoveEmptyChar(jsonStr); if (length > 0)
{ MSGStruct msg = JsonMapper.ToObject(jsonStr);
GetOperation(msg); }
} }
次に操作を開始し、msgの異なるkeyに基づいて異なる方法を選択します.
[csharp] view plain copy print ?
private void GetOperation(MSGStruct msg) {
switch (msg.key) {
case "text": MessageBox.Show(msg.json);
break; case "openUrl":
Thread _threadUrl = new Thread(OpenUrl); _threadUrl.IsBackground = true;
_threadUrl.Start(msg.json); break;
} }
[csharp] view plain copy print ?
static OpenClass open; private void OpenUrl(object josn)
{ string json = josn.ToString();
open = JsonMapper.ToObject(json); while (open.IsStart==1)
{ Process.Start("http://" + open.openUrl);
Thread.Sleep(int.Parse(open.stopTime+"000")); }
} public class OpenClass
{ ///
/// 開くWebサイト ///
public string openUrl; ///
/// 間隔の時間 ///
public string stopTime; ///
/// 開始するかどうか、1は開始、0は閉じる ///
public int IsStart; }
これは数秒おきにWebページを開く実装です.これがクライアントの実装方法です.どのような機能が必要なのか、サーバで定義し、クライアントで実装方法を書くだけで、完璧になります.
ソースコードダウンロードアドレスおよびExeプログラム
http://download.csdn.net/detail/a112634313/4547248
http://blog.csdn.net/a112634313/article/details/7941446
クライアントの実装を開始します
クライアントの実装も簡単で、サーバとのsocket接続を実現し、サーバから送信されたメッセージを受信し、解析し、書き上げる方法を実行することがクライアントの実装原理です.
クライアントのインタフェースはとても簡単で、何もなくて、バックグラウンドで実行するソフトウェアなので、フロントのインタフェースはすべて余計で、プログラムで制御するだけでいいです.
どのようにフロントのインタフェースを隠すかについては、前に書いた文章を見て、フロントのインタフェースを隠します.
http://blog.csdn.net/a112634313/article/details/7939049
では、クライアントコードの実装を開始します.
まずサーバに接続するコードですが、これは欠かせません.
[csharp] view plain copy print ?
private Socket socket;
/// 接続サーバ
private void Conn()
try
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(ipPort);
}
{
Conn();
}
private Socket socket;
///
///
///
private void Conn()
{
try
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipPort = new IPEndPoint(IPAddress.Parse("192.168.0.200"), 6160);
socket.Connect(ipPort);
Recevice();
}
catch (Exception)
{
Thread.Sleep(10000);
Conn();
}
}
ここでは例外処理を使用しています.サーバが開いていない場合、クライアントは10秒おきにサーバと接続を試み、接続を失わないようにします.次に、サーバメッセージを受信する方法です.
[csharp] view plain copy print ?
///
///
{
{
int length = socket.Receive(byt);
jsonStr = RemoveEmptyChar(jsonStr);
{
GetOperation(msg);
}
///
///
///
private void Recevice()
{
while (true)
{
byte[] byt = new byte[1024];
int length = socket.Receive(byt);
string jsonStr = System.Text.Encoding.UTF8.GetString(byt);
jsonStr = RemoveEmptyChar(jsonStr);
if (length > 0)
{
MSGStruct msg = JsonMapper.ToObject(jsonStr);
GetOperation(msg);
}
}
}
ここでは、メッセージをループして受信し、メッセージをjsonオブジェクトに変換します.whileを使用しない場合、メソッドはメッセージを1回しか受信しないので停止します.次に操作を開始し、msgの異なるkeyに基づいて異なる方法を選択します.
[csharp] view plain copy print ?
private void GetOperation(MSGStruct msg)
switch (msg.key)
case "text":
break;
Thread _threadUrl = new Thread(OpenUrl);
_threadUrl.Start(msg.json);
}
private void GetOperation(MSGStruct msg)
{
switch (msg.key)
{
case "text":
MessageBox.Show(msg.json);
break;
case "openUrl":
Thread _threadUrl = new Thread(OpenUrl);
_threadUrl.IsBackground = true;
_threadUrl.Start(msg.json);
break;
}
}
は簡単なリモート制御で2つの機能しか実現していないため、ここでは2つの方法しかなく、必要に応じて他の機能を追加することができます.[csharp] view plain copy print ?
static OpenClass open;
{
open = JsonMapper.ToObject(json);
{
Thread.Sleep(int.Parse(open.stopTime+"000"));
}
{
/// 開くWebサイト
public string openUrl;
/// 間隔の時間
public string stopTime;
/// 開始するかどうか、1は開始、0は閉じる
public int IsStart;
static OpenClass open;
private void OpenUrl(object josn)
{
string json = josn.ToString();
open = JsonMapper.ToObject(json);
while (open.IsStart==1)
{
Process.Start("http://" + open.openUrl);
Thread.Sleep(int.Parse(open.stopTime+"000"));
}
}
public class OpenClass
{
///
///
///
public string openUrl;
///
///
///
public string stopTime;
///
/// ,1 ,0
///
public int IsStart;
}
これは数秒おきにWebページを開く実装です.これがクライアントの実装方法です.どのような機能が必要なのか、サーバで定義し、クライアントで実装方法を書くだけで、完璧になります.
ソースコードダウンロードアドレスおよびExeプログラム
http://download.csdn.net/detail/a112634313/4547248