問題タブ [sockaddr-in]

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.

0 投票する
0 に答える
780 参照

c++ - c++ マップと struct sockaddr_in 値のコピーと sendto の使用

さて、マップから構造体 sockaddr_in を取得しようとすると、tmp var を使用してメソッド sendto を使用してソケット経由で構造体 sockaddr_in を送信するという問題があります。

recvfrom を呼び出した後、名前をキーとして構造体 sockaddr をマップに配置しました。次に、別のリクエストでそのアドレスを再度取得しようとすると、取得します。

次に、このマップの内容を印刷しようとすると、seg fault 11 が発生します。印刷に使用したコードは次のとおりです。

どんな助けでも大歓迎です。私は c++ が苦手で、リファレンスが悪い可能性があります。

ありがとうございます!!!!

0 投票する
2 に答える
7047 参照

c++ - 2 つの sockaddr_in 構造体間の比較を評価したい

現在、私はピア ツー ピア ネットワーク アーキテクチャを構築している最中であり、ネットワーク上の複数のクライアントからのメッセージを受け入れる受信機能を作成する段階にあります。基本的に、recvfrom 関数が呼び出されると、メイン クライアントにメッセージを送信した最新のクライアントのアドレスが、fromAddr と呼ばれる sockaddr_in 構造体にロードされます。次にプログラムは、クライアント クラスの複数のインスタンス (それぞれがネットワーク上のクライアントを表すために必要な情報と機能を保持する) を含むベクトルをループ処理し、sockaddr_in 構造体が受信したばかりのものと一致するクライアント インスタンスを見つけるように設計されています。メッセージ。プログラムでは、評価は現在次のようになっています。

プログラムをコンパイルすると、次のエラーが報告されます。

エラー 3 エラー C2678: バイナリ '==' : 型 'IN_ADDR' の左側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません)

推測されるかもしれませんが、2 つの sockaddr_in 構造体自体を単純に比較して式を評価しようとしました。

同じエラーが報告されます。問題は、式を評価できるオーバーロードされた演算子関数を持つ sockaddr_in クラスを作成する以外に、この比較を実装する最も簡単な方法は何でしょうか?

0 投票する
1 に答える
271 参照

c - getaddrinfo() の呼び出し後に sockaddr 値が予期せず変更される

UDP クライアントをプログラミングしています。すべての送信に常に同じポートが使用されるように、ソケットをクライアント マシンの特定のポートにバインドしたいと考えています。getaddrinfo を使用してサーバーの sockaddr を取得し、getaddrinfo の呼び出しに渡す sockaddr を取得するために同じことを行います。しかし、getaddrinfo への 2 回目の呼び出しの後、サーバー マシンのアドレスが変更され、クライアント マシンからクライアント マシン自体にパケットを送信することになります。

次のコードは、エラーを再現するスタンドアロンの例です。

私のマシンでこのプログラムを実行すると、次の出力が生成されます。

私はCでのソケットプログラミングにかなり慣れていないので、ばかげた間違いを犯していると確信していますが、たくさんグーグルで調べて多くのことを試した後、私はまだこれにこだわっています. 何か案が?

0 投票する
2 に答える
1473 参照

network-programming - sockaddr_in を sockaddr_in6 構造体に変換する C 関数はありますか?

正規化された IP アドレスを使用してデータベースにデータを保存したいと考えています。

この時点で、ソフトウェアは IPv4 または IPv6 アドレスを取得できます。すべてのアドレスを IPv6 アドレスに変換して正規化したいと考えています。

inet_pton()文字列をバイナリアドレスに変換することを知っています。したがって、IPv6 で 1 回試行できます。失敗した場合は、IPv4 で再試行します。

inet_convert_ipv4_to_ipv6(&sa4, &sa);そこで、 をに変換するsockaddr_inような関数を探していsockaddr_in6ます。Cライブラリにそのようなものはありますか?

そのような関数がない場合、次のように '::ffff:' イントロデューサを使用することで解決できます。

sockaddr_in代わりに、IPv4を IPv6sockaddr_in6関数に変換する方法があることを願っています。もっときれいになると思います...この最後のコードは100%安全ではないと思います(最初にIPv4変換をテストし、成功した場合はIPv6変換を使用して安全にすることができると思います.なんて無駄だ.時間はかかりますが!)

0 投票する
1 に答える
2015 参照

c++ - C++ [UDP] サーバー上のすべての接続 (クライアント) ソケット接続を追跡する方法は?

私のサーバーは、受信したメッセージを接続されているすべてのクライアントに転送する必要がありますが、私のコードはメッセージを送信者にしか送り返すことができません。

0 投票する
1 に答える
480 参照

c++ - sockaddr_in 構造体への ip の受け渡しについて

クライアント プログラムを作成するときに、接続先のホストの IP を次のように渡すのはなぜですか。

しかし、これは機能しません:

しかし、サーバー プログラムを作成すると、次のように動作します。

0 投票する
1 に答える
736 参照

swift3 - Swift 3 - CFHostScheduleWithRunLoop クラッシュ

私は Swift でリバース DNS を実行しています。以前の Swift 2.2 のコードは正常に動作していました。また、Objective-C に実装して動作します。ただし、Swift 3.0 で動作させることはできません

スイフト 2.2

スイフト3.0

このコードを実行すると、次の場所でクラッシュします

CFHostScheduleWithRunLoop

何か案が?

0 投票する
1 に答える
430 参照

c - 文字列から sockaddr_in に IP アドレスをコピーできません

文字列から sockaddr_in 構造体に IP アドレスをコピーしようとしていますが、何らかのエラーが発生します。

上記のコードの出力は次のとおりです。

文字列から値をコピーする際に、ip私が理解できないエラーがあります。その理由は何ですか?