スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

チャットが動いた

この間作ったチャットサーバーシステムのクライアント部を作成してみた。

C++でDLLを作成してC#で使っていたのだが、なんとも不細工に見えてきたので全部C#で作り直してみた。

C#でのソケット通信の方法はいろいろあるみたいだけど
using System.Net.Sockets;
using System.Net;

を利用した方法を採用。

ソケットをコネクトしたらBeginReceiveで受信スレッドを別に作成。
一通り受信したら内容を解析して処理。
また次スレッドを作成。

という流れで随時サーバーから受信データを得る仕組みにした。
排他処理にはlockを利用した。
使い方を詳しく調べていないので不安だが
lock(ロックしたいオブジェクト)
{
    ここにロック中の処理
}

としてやれば良いみたいだ。やっぱりC#はスマート。素敵。

っと、思っていたらパケットの作成部分がどうもスマートではない。
チャット文字を含むような可変長のByte配列を作成する場合、無理に構造体を使って作成しようとすると途端にC#らしさがなくなってしまう。
結局頭から長さを指定していくオーソドックス?な形で落ち着くことにした。


チャット自体の仕様は以下の通り。
・大雑把にMAPに大きな区切りを付ける
・自分の周囲1マスの区切りまでのユーザーのチャットは送受信する

といったかんじ。
明日からは区切りの間を移動するユーザーの切り替え処理を作成しようと思う。
同時に大きなMAP(とりあえず2D)を移動するプログラムも作ってテストすることにする。

チャット用途で移動できるMAPを作成するのであれば今回のようなレベルのシステムでどうにかなりそうだけど、リアルタイムなネットワーク対戦となるとUDPを使った高速な通信+予測のアルゴリズムを利用したスムーズなキャラクター描写などを取り入れなければいけない気がしてきた。
正直色々な知識が足りない。(今に始まったことじゃないが



ねよっと。

コメントの投稿

非公開コメント

プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。