問題タブ [communication-protocol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - .NET双方向ソケットリアルタイム通信プロトコル
クライアントがコマンドを送信し、サーバーがイベントをトリガーできるように、サーバーと複数のクライアント間の接続を維持する必要があります。サーバーは基本的に音楽プレーヤーであり、クライアントは「Play()」、「Pause()」、「GetPlaylists()」などのコマンドを送信します。サーバー側のサーバーは、クライアントに次のようなことを伝えることができる必要があります。 「SongEnded」または「PlayerPaused」。また、いくつかのデータ(現在の曲、アルバム画像、プレイリストなど)を送受信できる必要があります。自分でソケットを作成し、上記のすべてのシナリオを処理するための独自のプロトコルを作成することもできますが、誰かがすでにこれを行っている可能性があるため、私が本当に必要としているのは、リアルタイム用に作成されたフレームワークです- .NETのサーバーとクライアント間の通信。私' たとえば、xml-rpcを調べましたが、それを使用して「OnClientSend」をどのように処理する必要があるかわかりません。また、私が間違っていなければ、xml-rpcはRESTのように作られています。wcfも調べましたが、経験がないため、どこから始めればよいのか、単純なコンソールアプリでサーバーをホストする方法がわかりません。
重要:クライアントは.NETになれないようにする必要があります。
重要:これは、Java(Android)に接続できる必要があります。
重要:プライマリプラットフォームは、Windows(サーバーとクライアント)とAndroid(クライアント)です。
重要:オーディオのストリーミングは行われません。ただし、画像を送信する必要があります。
解決策のアイデアをいただければ幸いです。また、優れたフレームワークへのリンクや、.NET内にすでに存在するコンポーネントの使用方法の説明があれば、本当に嬉しいです。
[編集] 問題は、ソケットを介してデータを送信するときに、送信したパッケージがサーバーによって同時に読み取られるという保証がないことです(まったく!)。50、100、50バイトの順に送信する場合もありますが、サーバーはそれを200バイトのチャンク、または最初に100、100などとして読み取る場合があります。つまり、バッファを作成し、確実にわかるまでメッセージを読み込む必要があります(これは問題です)私はメッセージ全体を受け取りました(そしてそれ以上は何もありません)。
php - PDOはMySQLに最後に挿入されたIDをどのように知るのですか?
編集:この質問のタイトルは元々次のとおりでした:DoctrineはMySQLに最後に挿入されたIDをどのように知っていますか?DoctrineORMマッパーに関連していました。少し掘り下げてみると、この質問はDoctrineではなく、PDO_MySQL、MySQL C API、そして最後にMySQLクライアントサーバー通信に関連していることがわかりました。タイトルを変更することにしたので、誰かが自分の質問に対する答えを見つけるかもしれません。
Doctrineを使用していない人のために:私は興味がありました、なぜ以下のように:
または類似:
ログ内の1つの位置(個別のなし)のみにつながりSELECT LAST_INSERT_ID()
ます:
元の質問:
私は2つのテーブルを持っています:
新しいカテゴリオブジェクトと製品オブジェクトを作成しました。カテゴリオブジェクトを製品オブジェクトに割り当てました。IDを設定しませんでした:
その後、接続をフラッシュし、MySQLログを確認しました。
Doctrineは、新しく作成されたカテゴリIDが312であることをどのようにして知りましたか?ログには他に何もありません。
sockets - 異なる言語で書かれたアプリケーション間の通信
いくつかのアプリケーション (すべて C#、C++、Python などの異なる言語で記述) をリンクすることを検討していますが、どうすればよいかわかりません。
リンクとはどういう意味ですか? 私が取り組んでいるシステムは、それぞれが特定の処理タスクを担当する小さなプログラムで構成されています。あるアプリケーションから別のアプリケーションにデータ セットを簡単に転送できるようにする必要があり (問題のデータ セットは巨大ではなく、おそらく数メガバイトです)、操作の現在の状態を制御する何らかの方法も必要です (これはクライアントサーバーモデルがベルを鳴らします)
ソケットや SOAP が普遍的な解決策のように思えますが、このテーマについて人々がどう考えているかについて意見を求めたかっただけです。
コメント/提案をお待ちしております。
c++ - C/C++ での通信プロトコルの実装
ソフトウェアに独自の通信プロトコル スタックを実装しようとしていますが、どこから始めればよいかわかりません。これは私がこれまでに行ったことのない種類の作業であり、最良の/推奨されるアプローチについてリソースの面で助けを求めています.
私は c/c++ を使用し、ライブラリ (BSD/BOOST/Apache) を自由に使用できますが、GPL は使用しません。私は C++ を広範囲に使用してきたので、C++ の機能を使用することは問題ではありません。
プロトコル スタックには 3 つのレイヤーがあり、すでに完全に仕様が規定され、正式に検証されています。したがって、私がする必要があるのは、指定された言語で実装して完全にテストすることだけです。また、プロトコルは非常に単純ですが、信頼できる物理トランスポート層を介してさまざまなデバイスで実行できることにも言及する必要があります。イベント、入力、出力、副作用、およびプロトコル ステート マシンの動作を理解しています。通常、物理層から受信したメッセージを読み取るために割り込みを受け取り、それを読み取って待ち受けデバイスに送信します。受信デバイスは、応答メッセージを処理してプロトコル層に渡し、物理層に送信できます。
参照/推奨事項の助けをいただければ幸いです。それらを実装する方法を理解するのに役立つだけであれば、別の言語を使用しても構わないと思っていますが、最終的には選択した言語に頼る必要があります。
更新:実装したいプロトコルの例はSNEPのようなものです。
接続管理について心配する必要はありません。接続はすでに確立されており、プロトコルが行うのは、仕様でプロトコル メッセージがすでに明確に定義されているデータ交換であると想定できます。
.net - SQL Server 共有メモリ通信プロトコルの使用
インターネットで同様のトピックの記事と回答をたくさん読みましたが、問題の理由が見つかりませんでした。
同じマシン上の SQL Server Express に接続する .NET 4 Windows サービスがあります。本番環境で 1 回だけ、次のエラーが表示されました。
「サーバーとの接続は正常に確立されましたが、ログイン プロセス中にエラーが発生しました。(プロバイダー: 名前付きパイプ プロバイダー、エラー: 0 - パイプの反対側にプロセスがありません。)」.
名前付きパイプ プロトコルを使用している場合、このエラーが発生する理由は明らかです。これは、サーバーでそれらを有効にしていないためです。しかし、ここで私の質問は、名前付きパイププロトコルをここで使用できる理由は何ですか? 接続文字列では、" Data Source=.\SQLEXPRESS " を使用しました。msdn およびインターネット上の情報を念頭に置いて、「.」常に「共有メモリ プロトコル」を使用する必要があります。では、ADO.NET SqlClient が代わりに名前付きパイプ プロトコルを使用することを決定するには、どうすればよいのでしょうか?
ほとんどの場合、すべてが正常に機能していますが、必要に応じてこの種のエラーを防止できるように、プロセスを知る必要があります。
前もってありがとう、トドル
custom-protocol - アプリケーションレベルのプロトコルのプログラミングへのアプローチ?
C# で簡単なソケット プログラミングを行っています。クライアントコンソールからユーザー名とパスワードを読み取り、資格情報をサーバーに送信し、サーバーから認証ステータスを返すことで、ユーザーを認証しようとしています。基本的なもの。私の質問は、データがサーバーとクライアントの両方が期待する形式であることを確認するにはどうすればよいですか?
たとえば、クライアントでユーザー資格情報を読み取る方法は次のとおりです。
ここでは、クライアント側でユーザー名とパスワードをコロン (またはその他の記号) で区切ります。サーバーでは、「:」をトークンとして使用して文字列を分割するだけです。これは機能しますが、ちょっと... 安全ではないようです。クライアントとサーバー間で共有されるある種の区切りトークンがあるべきではないので、このようにハードコーディングする必要はありませんか?
サーバーの応答についても同様です。認証が成功した場合、クライアントが期待する形式で応答を返すにはどうすればよいですか? 単純に「SUCCESS」または「AuthSuccessful=True/False」という文字列を送信しますか? サーバーがデータを送信する形式をクライアントが認識できるようにするにはどうすればよいですか (クライアントにハードコーディングする以外に)。
私が求めているのは、アプリケーションレベルのプロトコルを設計および実装する方法だと思います。あなたのアプリケーションに特有のものだと思いますが、プログラマーが一般的に使用する典型的なアプローチは何ですか? さらに、どのようにしてフォーマットの一貫性を保っていますか? この件に関する記事へのリンクもいただければ幸いです。
security - HTTPSとSSLの違い
HTTPSとSSLの違いは何ですか?私はそれらについて読み、以下を見つけました:
HTTPS:HTTPSは、HTTPとSSL/TLSの組み合わせです。これは、HTTPSが基本的にSSL/TLSを使用して保護されたデータを配信するHTTP接続であることを意味します。
SSL:SSLは、HTTP上で動作してセキュリティを提供する安全なプロトコルです。つまり、SSL暗号化データは、通信にHTTPなどのプロトコルを使用してルーティングされます。
これら2つの違いはどこにあるのでしょうか。または両方が同一ですか?
c++ - C++ または Objective C アプリケーションを使用して RTMP サーバーと通信する
Flash Player がこれを行うように、C++ または Objective C アプリケーションを使用して rtmp サーバーと通信することは可能ですか? Flash Player は C++ で書かれており、C++ ライブラリを使用しているため、可能である必要があることはわかっています。この方法を知っている場合は、コード例を見せてください。助けてくれてありがとう!
algorithm - 使用されている暗号化またはハッシュ方式を見つける
クライアント アプリケーションがセッション キーを返すために使用しているアルゴリズムを調べようとしています。
接続を開始すると、サーバーは最初に一意のセッション キーを送信します。次に、クライアントは暗号化またはハッシュ化されたパスワードで応答し、ユーザー名と一緒にサーバーに送信する必要があります。
クライアントとサーバー間のネットワーク トレースの例: (ユーザー名: serv1ce / パスワード: test12)
サーバーから受信したアプリ << 52 d7 1c 3f 9f 2c 05 c9 (ワンタイム セッション キー)
サーバーに送信されたアプリ >> 11 83 2d 7d ff 0c 51 8c 53 45 52 56 31 43 45 20
「53 45 52 56 31 43 45 20」の部分は、バイト値 (serv1ce) としてのクリア テキストのユーザー名です。
パスワード「test12」と64ビット(8バイト)セッションキー「52 d7 1c 3f 9f 2c 05 c9」でバイト「11 83 2d 7d ff 0c 51 8c」がどのように作成されたか知っている人はいますか?
.net - WebサイトからWindowsアプリケーションにクエリを実行するにはどうすればよいですか。
インターネットを通信回線として、2台のマシン間でどのように通信できるかを考えています。
アイディア
そもそもWebサイトとの通信方法を知っているWindowsサービス/アプリケーションが欲しいのですが(それは簡単です)、それ以降、Webサイトはそのマシンにクエリを実行して情報を要求する必要があります。
シナリオ
このアプリケーションを自分のマシンにインストールし、ローカルデータベースをどこにどのように配置するかを設定し、Webページを使用してそのデータベースにクエリを実行できるようにしたいとします。
プロトコル
私はそれをPPP(Point-to-Point)プロトコルを理解しようとしています、そしてそのアイデアは私たちがトレントで定期的に使用するものです...しかし私は.NETの下でこれに関する情報を見つけることができません
提案する
これらすべての主な提案は、このアプリケーション(主にWebサービス)を簡単にインストールできるようにすることですが、サーバーを指すようにドメイン名を設定する方法や、エンドポイントを取得する方法を理解することは避けてください。インストールしたばかりのWebサービスの...「ねえ、あなたの資格情報をインストールして設定してください、私と一緒に設定をさせてください」
そのような環境を作成するために使用できるライブラリはありますか?