C# TcpClientを使用してサーバーへ接続してみよう① [C# TcpClient]
お久しぶりです。キキです。
最近はFXをずっと勉強していてFIXのことをすっかり
忘れていました。
FIXの方もプログラム作成が途中で止まっていて
最近は全然進んでいない状態なんですね…。
なぜだかあまりやる気がおこらない…。
成行注文、成行決済の動作確認ができてひとまずほっとしてます。
後はエラー処理とかイレギュラー処理とか
後は…、タイムアウト処理もありますね。
結構実装する必要があります。
むしろこっちの方が大事ですよね…。
それが終わったらOCOとかいろんな注文方法の実装とか
してみて、それが完成したらライブラリでまとめることが
できそうですね。
その次は他の人がライブラリを使用するとして、Chart Controlを
使用してGUIを構築していきたいです。
まだまだ先は長いな~と感じております。
さて、今日はサーバーへ接続する基本となるコードを
C# TcpClientクラスを使用して説明していきます。
ここから少しずつ発展させて使えるようにしていきましょう
もう少し詳しく調べたいという方はDOBON.NETさんで
調べてください
以下はサーバーへ接続するコードになります
今回使用するサーバーのプログラムはこちらの
TcpListenerをダウンロードしてください
※実行には.NET Framework 4.5が必要です
TcpListener.exeを起動したらスタートボタンを押してください。
クライアントからメッセージがくると
テキストボックスに表示します
簡単に説明します
TcpClientクラスを作成するときに接続先の
IPアドレスとポートを設定します
"127.0.0.1"はローカルホストへ接続します。
同じPC上で動作しているサーバーへ接続すると
思っておいて大丈夫です。
3000はポート番号になります。
ポート番号はあらかじめサーバーが決めておいた
値を指定します。今回は勝手に3000を使用すると決めました。
クライアントはポート番号がわからないと接続できないので
教えてもらう必要があります。
OANDAにAPIを申し込んだ時も接続先アドレスと
ポート番号を教えてもらっているはずです。
次にデータの受け渡しをするために
TcpClientクラスからNetworkStream(上記コードでは変数名ns)を
取得します。var ns = client.GetStream();の個所です。
まぁ、ファイルポインタと同じような感じです。
これに対してWrite,Read処理を行っていきます。
送信するデータはbyte[]にする必要があるので
stringからbyte[]へ変換しています。
var data = Encoding.ASCII.GetBytes("test");の個所になります
変換はASCIIからbyte[]へ変換していますが
UTF8からも変換できます。これはサーバー側がどの文字コード
で処理するかによって変わるのかなと思っています。
試しにカタカナ"テスト"を送信するとサーバーでは???と表示されます
ASCIIで変換しているからですね。
クライアント、サーバー共にUTF8で変換すれば正しく表示されます。
FIX ProtocolではASCIIからbyte[]へ変換して送信すれば今のところ
動作しています。まぁ、他のブローカーでも大丈夫でしょう
最後は後処理ですね。
と、かなり大雑把な説明になりました。
次回はC# TcpClientを使用してサーバーへ接続してみよう②を
予定しています
スポンサーリンク
最近はFXをずっと勉強していてFIXのことをすっかり
忘れていました。
FIXの方もプログラム作成が途中で止まっていて
最近は全然進んでいない状態なんですね…。
なぜだかあまりやる気がおこらない…。
成行注文、成行決済の動作確認ができてひとまずほっとしてます。
後はエラー処理とかイレギュラー処理とか
後は…、タイムアウト処理もありますね。
結構実装する必要があります。
むしろこっちの方が大事ですよね…。
それが終わったらOCOとかいろんな注文方法の実装とか
してみて、それが完成したらライブラリでまとめることが
できそうですね。
その次は他の人がライブラリを使用するとして、Chart Controlを
使用してGUIを構築していきたいです。
まだまだ先は長いな~と感じております。
スポンサーリンク
さて、今日はサーバーへ接続する基本となるコードを
C# TcpClientクラスを使用して説明していきます。
ここから少しずつ発展させて使えるようにしていきましょう
もう少し詳しく調べたいという方はDOBON.NETさんで
調べてください
以下はサーバーへ接続するコードになります
今回使用するサーバーのプログラムはこちらの
TcpListenerをダウンロードしてください
※実行には.NET Framework 4.5が必要です
TcpListener.exeを起動したらスタートボタンを押してください。
クライアントからメッセージがくると
テキストボックスに表示します
private void button1_Click(object sender, EventArgs e)
{
var client = new TcpClient("127.0.0.1", 3000);
var ns = client.GetStream();
var data = Encoding.ASCII.GetBytes("test");
ns.Write(data, 0, data.Length);
ns.Close();
client.Close();
}
簡単に説明します
TcpClientクラスを作成するときに接続先の
IPアドレスとポートを設定します
"127.0.0.1"はローカルホストへ接続します。
同じPC上で動作しているサーバーへ接続すると
思っておいて大丈夫です。
3000はポート番号になります。
ポート番号はあらかじめサーバーが決めておいた
値を指定します。今回は勝手に3000を使用すると決めました。
クライアントはポート番号がわからないと接続できないので
教えてもらう必要があります。
OANDAにAPIを申し込んだ時も接続先アドレスと
ポート番号を教えてもらっているはずです。
次にデータの受け渡しをするために
TcpClientクラスからNetworkStream(上記コードでは変数名ns)を
取得します。var ns = client.GetStream();の個所です。
まぁ、ファイルポインタと同じような感じです。
これに対してWrite,Read処理を行っていきます。
送信するデータはbyte[]にする必要があるので
stringからbyte[]へ変換しています。
var data = Encoding.ASCII.GetBytes("test");の個所になります
変換はASCIIからbyte[]へ変換していますが
UTF8からも変換できます。これはサーバー側がどの文字コード
で処理するかによって変わるのかなと思っています。
試しにカタカナ"テスト"を送信するとサーバーでは???と表示されます
ASCIIで変換しているからですね。
クライアント、サーバー共にUTF8で変換すれば正しく表示されます。
FIX ProtocolではASCIIからbyte[]へ変換して送信すれば今のところ
動作しています。まぁ、他のブローカーでも大丈夫でしょう
最後は後処理ですね。
と、かなり大雑把な説明になりました。
次回はC# TcpClientを使用してサーバーへ接続してみよう②を
予定しています
スポンサーリンク
2015-11-30 13:00
nice!(0)
コメント(0)
トラックバック(0)
コメント 0