私はソケット プログラミングの初心者ですが、単純な tcp サーバー クライアント プログラムを書いていたので、ストリーム ベースの API はあまり使いにくいことがわかりました。
私のプログラムは単純です:
- クライアントがサーバーに接続します
- サーバーは、予期しない間隔でクライアントにメッセージを継続的に送信します
- クライアントはメッセージを受信し、メッセージに含まれるデータに従って作業を行います
ただし、ストリームベースの API を使用するには、次のことを行う必要があります。
- メッセージの区切り記号/区切り記号を定義する
while
ループを使用してストリームからデータを読み取る- すべてのバイトを連結し、区切り文字を見つけてください
- デリミタが存在する場合、データを分割し、メッセージを抽出します
それは私のプログラムのロジック全体よりもさらに多くの作業です。そのため、ライブラリが私のために上記のことを実行できるのではないかと考えています。そのようなライブラリを使用して、次のようにプログラムできます。
// Server
TcpListenerEx server = new TcpListenerEx();
TcpClientEx client = server.Accept();
client.SendMessage(new StringMessage("hello world"));
// Client
TcpClientEx client = new TcpClientEx();
client.Connect("localhost", 8989);
while (true) {
IMessage message = client.ReadMesage();
// Do work acording to message
}
どんな提案でも大歓迎です、ありがとう。