2014年2月4日火曜日

Golang Cafe #15

2/2(日)に開催された「Golang Cafe #15」に参加してきました。

参加者は +Takashi Yokoyama さん、+Takanobu Hagino さん、私の3名でした。

今回はnetパッケージで、横山さんのサンプル(tcp, udp)にて動作を確認しました。

TCP

Delphiでソケット通信アプリを作成した経験があったので理解しやすかったです。

TCPの流れは、サーバー側はnet.Listen()とListener.Accept()で待ち受け、クライアント側はnet.Dial()で接続し、それぞれ取得したConnインターフェースでデータの入出力を行います。

サーバー側では、受け取ったConnをGoroutineで並列処理するのが"Go通"ですq@w@p

netパッケージのOverviewがシンプルな骨格を提示してくれています。

UDP

用意されたサンプルが動作しない状態だったため、各自で動作するようにもくもくしました。結果的にはTCPのサンプルをコピーしていたため、コネクションレスであるUDPで双方向通信を行う実装になっていたのが原因でした。

UDPの流れは、サーバー側はnet.ResolveUDPAddr()とnet.ListenUDP()で待ち受け、クライアント側はnet.ResolveUDPAddr()とnet.DialUDP()で接続し、それぞれ取得したUDPConnインターフェースでデータの入出力を行います。

サーバー側では、受け取ったUDPConnのReadFrom()/ReadFromUDP()メソッドにてバッファーを用意しておく必要があります。

萩野さんが紹介して下さった「Strange behaviour of golang UDP server」で理解が進みました。

後半

Git&GitHub講座になりました。私はGitを触れておらずGitHubもアカウントを取得しただけという状態だったので、本勉強会を通じて習得したいところです。

リモートリポジトリー上のサンプルソースが更新され、ローカルのソースを最新化するために、以下のgitコマンドを実行させました。

  • git status
  • git reset --hard
  • git pull

横山さんの「golangcafe」を自分のGitHubにforkするため、以下の手順を実行しました。

  1. GitHubにサインインする。
  2. forkしたいGitHub上のリポジトリー(横山さんの「golangcafe」)を開く。
  3. 画面右上の「Fork」をクリックする。

詳細&技術な内容

横山さんや萩野さんのブログをご覧下さい。


[2014.02.07] 横山さんのブログへのリンクを追加しました。
[2014.02.11] 萩野さんのブログへのリンクを追加しました。

0 件のコメント: