これはかなり複雑な質問であり、そのことをお詫び申し上げます。私は単純なチャット サーバーの基本的なフレームワークである Linux C ソケット アプリケーションを作成しました。サーバーはラップトップで実行されています。指定されたクライアント アプリケーションを作成するまで、現時点ではクライアントは Telnet です (より安全になることを願っています)。クライアント エンドから一般的なネットワーク データを送信するためのより優れたアプリケーションがあることは知っていますが、ある Telnet クライアントで特定のことが発生し、別のクライアントでは発生しない理由に興味を持ちました。
最初の Telnet クライアント テストは、別の Linux ラップトップで行われました。期待どおりに動作します。ただし、次は、Telnet および SSH 接続を可能にする BBSSH と呼ばれる Blackberry アプリでした。私は Telnet オプションを使用しましたが、これも機能します。ただし、正確にはそうではありません。
サーバーコードは通常のread
呼び出しを行ってデータのブロックを取得します。これは文字列、つまりメッセージとして扱われます。以前のクライアントは、私が Enter キーを押すまで読み取り、その後 1 つの文字列を送信します。しかし、BB アプリは、あたかも私がそれらの後にエンターを押したかのように、すべての文字を送信しますが、私はそうしていません。明らかに、これはバッファリング、ユーザー入力からの EOL としての特定のクライアント クラスなどと関係があります。私はそれを特定することはできません。
説明のために、クライアントから受信したメッセージを出力するサーバーを次に示します。
まず、Linux クライアントからのメッセージ:
client name: this is a test
次に、BBSSH の場合:
client name: t
client name: h
client name: i
client name: s
client name:
client name: i
client name: s
client name:
client name: a
client name:
client name: t
client name: e
client name: s
client name: t
何か助けはありますか?