SSブログ

C# TcpClientを使用してサーバーへ接続してみよう① [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を使用してサーバーへ接続してみよう②を

予定しています

スポンサーリンク


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。