問題タブ [getaddrinfo]
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.
winsock - getaddrinfo() の使用方法
www.google.com のような文字列を取り込んで IP アドレスを返す簡単なプログラムを作成しようとしています...
私がこれまでに持っているもの:
4 番目のパラメーターの 3 番目は何をすることになっていますか? getaddrinfo 関数は new_addr 構造を変更しますか、それとも何を変更しますか? msdn のドキュメントがよくわかりません。ホスト名が解決されたら、それにソケットを接続したいと思います。
c - getaddrinfo を使用して、外部 IP を使用してサーバーに接続する方法は?
小さな C クライアント/サーバー アプリケーションを作成していますが、外部 IP アドレスを使用すると接続が機能しません。クライアントとサーバーの両方のコードはhereから取得されます。特に、クライアントは次のことを行います。
サーバーの間:
コマンド ラインで自分のマシンの IP を指定するとserver_name
、クライアントの が のような文字列に設定され151.51.xxx.xxx
、ソケットがサーバーに接続できなくなります。また、使用し127.0.0.1
ても同じ動作が示されるため、ドキュメントに次のように記載されていると思います。
関心のあるホスト名は nodename パラメーターに入ります。アドレスは、「www.example.com」などのホスト名か、IPv4 または IPv6 アドレス (文字列として渡される) のいずれかです。
冗談です。
私は何か間違ったことをしていますか?クライアントが IP アドレスを使用して接続するのを妨げているファイアウォールなどに問題がある可能性はありますか?
注:私はすでにこの問題をたくさん検索しており、使用getaddrinfo
をまったく避けて を直接入力するように言う人もいますINADDR_ANY
が、getaddrinfo
ドキュメントには as を渡すとアドレスが で埋めNULL
られるはずであると記載されているため、なぜ使用する必要があるのか わかりません新しい方法がこれを自動的に行うときの古い方法。nodename
INADDR_ANY
python - Python でこの HTTPS リクエストを処理するにはどうすればよいですか?
Python でStrava API v3を使用しようとしていますが、何か足りないのではないかと心配しています。ドキュメントは言う:
このベース URL は、すべての Strava API リクエストに使用されます: https://api.strava.com
応答は JSON 形式で、gzip されています。
私は現在これをやっています:
そしてこれを得る:
HTTP リクエストと HTTPS についてあまり知らないので、どこから始めればよいかわかりません。
更新:モジュールを使用するというマーリンの提案によるとrequests
、私はこれを行っています:
しかし、エラーが発生し続けます:
ruby-on-rails-3.1 - .rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/net/http.rb:644:in `initialize': そのようなファイルまたはディレクトリはありません - getaddrinfo (Errno::ENOENT)
rake db:migrate、rake schema:load、rails s を実行しようとすると、次のエラーが発生しました。Bitbucket から git clone したアプリケーションは使用できず、クライアントは助けられません。
ruby と gemset を再インストールしましたが、うまくいきませんでした。このエラーを修正する方法がわかりません。助けてください。エラーの原因と、エラーの修正に役立つ情報はどこにありますか?
エラー番号::ENOENT
Rails.root: /home/jacek/Programming/Rails/idea-academy アプリケーション トレース | フレームワーク トレース | 完全なトレース
c - getaddrinfo() を使用すると、DNS がタイムアウトした場合にのみ nscd キャッシュが最初にチェックされます
最初の「名前またはサービスが不明」(EAI_NONAME) を取得した場合、getaddrinfo() への次の呼び出しは、最初にキャッシュをチェックするのではなく、dns に直接行くようです (nscd ログはルックアップ試行を示さず、tcpdump は DNS サーバーへのトラフィックを示します) )。最初の呼び出しがアドレスの取得に成功した場合、それ以降、予想どおり、すべての getaddrinfo() 呼び出しは最初に nscd に進みます。
arm Linux の glibc-2.13 に対してコンパイルしています。私の rc.d では、デーモンの前に nscd が開始されます。nscd は、共有キャッシュを禁止し、ホスト キャッシュを維持するように設定されています。busybox (0.47) の nscd を使用しています。nsswitch.conf は、ホストが cache/files/dns をチェックするように設定されています。hosts.conf はファイル/バインドをチェックするように設定されています。
私のデーモンは getaddrinfo() を呼び出しています。
実行中の nscd のデバッグ ログがあり、クライアントが DNS 応答の読み取りを開始し、"Broken Pipe" エラーで終了したことを示しています。
その後、キャッシュを使用しようとする他のデーモンからの GAI の試みが表示されます (したがって、nscd がロックされているなどではないことがわかります)。
デーモンを再起動すると、最初の DNS クエリが再びタイムアウトになると、同じ動作になります。
私のデーモンのキャッシュへのリンクを無効にしている glibc に何かありますか? デーモンを再起動せずにキャッシュに再接続する方法はありますか (resolv.conf を res_init() で強制的に再ロードするのと同様)
python - Linux で dev_appserver.py を開始すると、「getaddrinfo() 引数 1 は文字列または None でなければなりません」というエラーが発生する
しばらく App Engine を使用していなかったので、App Engine を再開しようとしています。64 ビットの Linux Go ランタイム、バージョン 1.8.1 を使用しています。
ドキュメントの手順を正しく実行していると思います。また、過去に正しく機能していたことを実行していると思いますが、起動しようとすると次のエラーが発生しますdev_appserver.py
。
私が最初に考えたのは、間違ったバージョンの Python を使用している可能性があるということでした。案の定、私は 2.7.5 を使用しており、ドキュメントには 2.5 が必要であると明確に記載されています。ただし、2.5 をインストールしてシステムで使用するように設定した後、次のエラーが発生したため、ドキュメントは古くなっているようです。
さて、2.7.5 と最初のエラーに戻ります。
これが Python コードのバグなのかdev_appserver.py
(1 か月前に公開されているので、そうではないと推測しています)、Python のインストールの問題なのか、それとも私のシステムがグーグルの期待。
必要な場合を除き、コードをいじりたくはありませんdev_appserver.py
が、問題の原因を突き止めるために喜んでコードを調べます。エラーは 194 行目にあります。ここに190-195行目があります:
包含メソッドが 2 回呼び出されていることがわかりました。初回はhost
いつもです。2 回目はクラッシュします。は常に(文字列ではなく int)、一見ランダムな 5 桁の int です。"127.0.0.1"
port
0
host
10
port
と を または のいずれかにハードコーディングしようとしましhost
たが"127.0.0.1"
、別のエラーが発生します。頭がいっぱいで、よくわからないことを変更しても、本当の問題を解決できないのではないかと思います。エラーメッセージをグーグルで検索しても役に立ちませんでした。port
8080
0
c - 複数のUDP接続を受け入れるソケット制御
クライアント/サーバーが自分で複数のソケット接続を受け入れるようにする方法を理解しようとして、私は心を壊しています。
接続はデータグラム (UDP) で、現時点では Works Nice に基づいて実装されてgetaddrinfo(3) man page
いますが、各クライアントは初期接続のプロセスが処理されるのを待つ必要があります。
select について聞いたことがありますが、そのマニュアルページには次のように書かれています:
select() を使用すると、素朴なプログラマーがスレッド、フォーク、IPC、シグナル、メモリ共有などを使用してより複雑な方法で解決しようとする、移植可能で効率的な方法で多くの問題を解決できます。
もっと:
Linux 固有の epoll(7) API は、多数のファイル記述子を監視する場合に、select(2) および poll(2) よりも効率的なインターフェースを提供します。
それで、そうですか?epoll は単に select よりも優れているのですか? それとも依存?それが依存する場合、何に依存しますか?
epoll の man ページには部分的なサンプルがあるので、理解しようとしています。
現在、(サーバー上で)あるスレッドでリッスンし、別のスレッドに書き込むにはスレッドが必要だと思います。しかし、部分的なメッセージの完了を制御するにはどうすればよいでしょうか? 2 つのクライアントがインターリーブされた部分的なメッセージを送信する場合、どのように識別しますか? sockaddrで?それだけが必要な場合は、プールなしで管理できますが、なぜepollを使用するのですか?
マルチ接続のクライアント/サーバー UDP アプリについて、作成方法、またはどこで学べばよいか説明してくれる人はいますか?
ruby - Webdriver により、IE10/Win7 で「SocketError: getaddrinfo: No such host is known」が発生する
CI が IE10 で機能テストを実行する仮想 Windows 7 イメージがあります。機能テストは、Cucumber + Watir-Webdriver を使用して Ruby で記述されています。
ほとんどの場合、問題なく動作しますが、時々、すべてのテストが次の例外で失敗し始めます。
多くの場合、仮想マシンを再起動するまでそれ以上のテスト実行は機能しません。その後、数日間は再び機能します。
selenium-webdriver のコードを確認したところ、失敗した行は次のとおりです。
使用中のプロキシはなく、通信はイントラネット内でのみ行われます。ただし、インターネットアクセスは利用できます。hosts ファイルには、localhost のエントリが含まれていません。selenium-webdriver 2.34.0 を使用しています。同じ構成の Win7/IE9 仮想マシンには、このような問題はありません。