0

ソケット関数を使用して任意のプログラミング言語を使用してデータベースサーバーに接続するにはどうすればよいですか。私はプロトコルのように考えています。たとえば、smtp、http、ftp、imap。これらのポートに接続し、コマンドを発行します(コマンドを実行します)。このように、データベースサーバー(ポートは3306)に接続でき、DDL、DML、TCLなどのさまざまな機能を実行する可能性のあるコマンドを発行できます。

人々はデータベースサーバーと言うので、mysql_connect、mysql_select、mysql_queryなどのプログラミング言語関連のSQL関数を使用する代わりに、私が考えることを実行する可能性があると思いました...

提案、回答、参考資料が欲しいのですが。これに関する情報を見つけるためにグーグルで関連する検索文字列を使用していない可能性があります。

4

2 に答える 2

1

"あなたはそうしない"。特定のサービスがそのプロトコルをパブリックAPIとして文書化しない限り、これはリスクが高く、困難であり、いつでも壊れやすくなります。プロトコルには、これを困難にすることを特に意図した要素が含まれている場合もあります。もちろん、wiresharkでプロトコルをリバースエンジニアリングすることはできますが、定義に「9月22日にすべてのQをRに変更する」が含まれていないことを確認することはできません。

于 2011-09-04T21:58:43.147 に答える
0

(カスタム)プロトコルを使用してサーバーと通信する必要があります。

しかし、なぜこれらのプロトコルを再実装したいのですか?これが単なる学術的な好奇心でない限り、DBベンダーが提供するライブラリを使用する方がはるかに良いでしょう。

あなたが話している関数(mysql_connect、mysql_query、...)は、基本的にrawソケットで動作していますが、プロトコルを知っています。彼らはSQLクエリを受け取り、ソケットを受け取り、送信する適切なデータにクエリを処理します。

DBサーバーなどのプロトコルは、人間が読める形式ではなくなります。HTTPは、小さいサイズと厳密な解析用に設計されたプロトコルと比較して、きれいで明確です。どうしても必要な場合を除いて、私は車輪の再発明を避けます。

于 2011-09-04T21:45:26.260 に答える