タグ付けされた質問 「sockets」

双方向のプロセス間通信フローのエンドポイント。これは多くの場合、ネットワーク接続を介したプロセスフローを指しますが、これに限定されるものではありません。WebSocket(プロトコル)または他の抽象化(例:socket.io)と混同しないでください。

5
ソケットプログラミングのためのINADDR_ANYの理解
私はいくつかのソケットをプログラムしようとしているので、サーバー側ではを使用しますhtonl(INADDR_ANY)。私が理解している限りでは、この関数はランダムなIPを生成しているように見えます(私は正しいですか?)。実際、ソケットをにバインドしたいと思いlocalhostます。しかし、これを実行すると printf("%d",htonl(INADDR_ANY)); 戻り値として0を取得します。誰かが説明を持ってくることができますか?
84 c  sockets 

12
Python:バインディングソケット:「アドレスはすでに使用されています」
TCP / IPネットワークのクライアントソケットについて質問があります。私が使っているとしましょう try: comSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) except socket.error, msg: sys.stderr.write("[ERROR] %s\n" % msg[1]) sys.exit(1) try: comSocket.bind(('', 5555)) comSocket.connect() except socket.error, msg: sys.stderr.write("[ERROR] %s\n" % msg[1]) sys.exit(2) 作成されたソケットはポート5555にバインドされます。問題は、接続を終了した後です。 comSocket.shutdown(1) comSocket.close() Wiresharkを使用すると、両側からFIN、ACK、およびACKでソケットが閉じているのがわかります。ポートを再び使用することはできません。次のエラーが発生します。 [ERROR] Address already in use 次回も同じポートを使用できるように、ポートをすぐにクリアするにはどうすればよいでしょうか。 comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) setsockoptは問題を解決できないようですありがとうございます!
83 python  sockets  tcp  port 

14
サーバーソケットからのクライアントの切断を即座に検出
クライアントがサーバーから切断されたことをどのように検出できますか? 私のAcceptCallBackメソッドには次のコードがあります static Socket handler = null; public static void AcceptCallback(IAsyncResult ar) { //Accept incoming connection Socket listener = (Socket)ar.AsyncState; handler = listener.EndAccept(ar); } クライアントがhandlerソケットから切断されたことをできるだけ早く発見する方法を見つける必要があります。 私はもう試した: handler.Available; handler.Send(new byte[1], 0, SocketFlags.None); handler.Receive(new byte[1], 0, SocketFlags.None); 上記のアプローチは、サーバーに接続していてサーバーの切断を検出したい場合は機能しますが、サーバーでありクライアントの切断を検出したい場合は機能しません。 どんな助けでもありがたいです。
82 .net  c#  sockets  tcp  connection 

14
mysql.sockが見つかりません
mysqlを再インストールする必要がありましたが、起動に問題があります。ソケット(mysql.sock)が見つかりません。問題は、どちらもできないことです。MacOSX 10.4ターミナルで、「:locate mysql.sock」と入力すると、に戻り/private/tmp/mysql.sockます。ソケットファイルがその場所に存在することは理にかなっていますが、実際には存在しません。 ソケットファイルを見つけるにはどうすればよいですか? Locateが誤った場所を返している場合は、何らかのメモリとおそらくインデックスが必要です。そのインデックスを更新するにはどうすればよいですか?

5
Alpine Dockerコンテナー内のFlaskアプリのGunicorn execで発生した「OSError:libc not found」に対処する方法
私はMiguel Grinbergの巨大なチュートリアルのMicroblogアプリに基づいたFlaskアプリケーションに取り組んでいます。コードはここにあります: https //github.com/dnilasor/quickgig。リンクされたMySQL 5.7コンテナを使用して動作するDocker実装があります。今日、Flask-Adminモジュールを使用して管理ビュー機能を追加しました。「flask run」を介してFlaskサーバーのローカル(OSX)で美しく機能しますが、新しいDockerイメージ(python:3.8-alpineに基づく)をビルドして実行すると、ブート時にOSError: libc not foundエラーが発生してクラッシュします。不明なライブラリを示します 追加すると、Gunicornがアプリを提供できないようです。クラスメートと私は困惑しています! 私はもともとpython:3.6-alpineベースイメージを使用してエラーを取得したので、3.7と3.8で試してみたが役に立たなかった。私はまた、PyMySQLを冗長に追加していることに気付きました。そして再び明示的にdockerfileで仕様なしで。requirements.txtエントリを削除しました。また、Flask-Adminのバージョン番号を増やしてみました。上下。また、コンテナーの起動に失敗する原因となる複数の移行ファイルを見たので、データベースの移行をクリーンアップしてみました(確かに、これはSQLiteを使用している場合です)。これで、移行ファイルは1つだけになり、スタックトレースに基づいて、flask db upgrade問題なく動作するように見えます。 私がまだ試していないことの1つは、別のベースイメージ(最小限のものではないですか?)です。すぐに試して、これを更新できます。しかし、この問題は私にとって非常に神秘的であり、他の誰かがそれを見たことがあるかどうか尋ねる時がきたと思った:) 潜在的に関連があるように見えるこのソケットのバグを見つけましたが、Python 3.8で完全に修正されるはずでした。 また、私はここで循環インポートに関するいくつかのアドバイスに従い、内部に管理コントローラー機能をインポートしましたcreate_app。 Dockerfile: FROM python:3.8-alpine RUN adduser -D quickgig WORKDIR /home/quickgig COPY requirements.txt requirements.txt RUN python -m venv venv RUN venv/bin/pip install -r requirements.txt RUN venv/bin/pip install gunicorn pymysql COPY app app COPY migrations migrations …

2
クライアントとサービス間のゲートウェイとのSocketIO通信?
要旨 マイクロサービスベースのアーキテクチャ(Kubernetes)で実行されるアプリケーションがあります。アプリケーションの外部とのすべての通信は、API Gatewayを介して行われます。 つまり、私のフロントエンドからのリクエストはサービスに直接送信されませんが、ゲートウェイを経由する必要があります。 動かす 次に、フロントエンドと内部サービス間のリアルタイム通信を必要とする機能を実装する必要があります。しかし、内部サービスは外部に公開されていないため、ゲートウェイを介してリアルタイムデータを「ルーティング」する方法が必要です。 すべてのサービスがNode.jsで実行されているため、Socket.IOを使用してリアルタイム通信を実装したいのです。 問題 しかし、スケッチから紫色の二重矢印を実装する方法は? そのため、通常、フロントエンドクライアントは、Socket.IOが実行されているサーバーに接続します。しかし、私の場合、このサーバー(リアルタイム機能サーバー)はクライアントからアクセスできません(アクセスできないはずです)。つまり、クライアントはゲートウェイに接続する必要があります。したがって、ゲートウェイは、すべての着信メッセージをリアルタイムサービスとその逆にルーティングするメカニズムを実装する必要があります。 アイデア (1)ゲートウェイでイベントをリッスンする2番目のHTTPサーバーを用意し、それらのイベントをリアルタイムサーバーに送信します。反対の方向では、リアルタイムサーバーはゲートウェイにイベントを発行し、ゲートウェイはそれをフロントエンドに発行し​​ます。このアプローチは間違いなくうまくいくと思いますが、すべてを2回放出するのは冗長なようです。そして、それは間違いなくパフォーマンスを損なうでしょうか? (2)Socket.IOアダプターを使用して「ノード間でイベントを渡す」。これは「プロセスまたはコンピューター間でメッセージを渡す」ために使用されるため、正しい方法と思われます。しかし、ドキュメントやサンプルが不足しているため、使用を開始するのに問題があります。私もRedisを使用していません(アダプターを使用するために必要ですか?) (3)socket.io-emitterパッケージを使用します。これは、最後のコミットが3年前からあったため、良いオプションとは思えません。 (4)他に何かありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.