問題タブ [bsd]

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 投票する
3 に答える
4077 参照

c++ - BSDソケット-sendとrecvの使用

私はbsdソケットを使用してLinuxで簡単なチャットプログラムを実装しようとしています。現在、クライアントからサーバーに1つのメッセージを送受信しようとしています。コードを実行するたびに、recvは-1を返し、errnoコードは22です。

サーバーコード-

クライアントコード-

サーバー側でエラーが発生しても、クライアント側ではエラーメッセージが表示されません。正常に終了します。

-http ://www.workers.com.br/manuais/53/html/tcp53/mu/mu-7.htmによると 、errno22エラーメッセージは単に「無効な引数」を意味します。しかし、それをどのように正確に解釈するかはわかりません...引数が無効だった場合、なぜそれがコンパイルされるのでしょうか?

私がここで間違っていることを誰かが指摘できれば、私はとても感謝しています。そして、あなたが指摘したいと思う他の小さなメモは歓迎されます。助けてくれてありがとう。

0 投票する
4 に答える
11060 参照

c++ - BSD ソケット - ノンブロッキング ソケットの使用方法

ノンブロッキング TCP ソケットを使用しようとしています。問題は、彼らがまだブロックしていることです。コードは以下です -

サーバーコード -

クライアントコード -

私がそれを実行するときはいつでも、サーバーはクライアントが送信したものを読み取って出力する前に、私が何かを送信するのを待っています。サーバーまたはクライアントのいずれかが、入力するとすぐにメッセージを送信できるようにし、その時点でもう一方がメッセージを読み取って出力できるようにします。ノンブロッキングソケットが答えだと思いましたが、何か間違ったことをしているだけなのでしょうか?

また、sockaddr のデータとして、127.0.0.1 アドレスの代わりにファイルを使用していました。それが適切に使用されるべき方法ではない場合は、遠慮なくそう言ってください(以前はファイルで機能していたので、そのままにしておきました)。

どんな助けでも大歓迎です。

0 投票する
3 に答える
60683 参照

c - ノンブロッキング ソケットに select() を使用する

select 関数を使用して、サーバーと 1 つのクライアント (これ以上) の間で非ブロッキング I/O を実現しようとしています (これ以上はありません)。ここで、通信は適切に流れます (いつでも送信でき、もう一方は送信を待たずに受信します)。いくつかのコードを含むチュートリアルを見つけて、それを自分のものに適応させようとしました。これは私が持っているものです -

サーバ

クライアント (基本的に同じで、accept 呼び出しを除いたもの) -

問題は、それらを実行しても何も起こらないことです。一方に入力して Enter キーを押しても、もう一方の画面には何も表示されません (逆も同様です)。それは私がデバッグするためのすべての情報ではありません。これはselectを使用する最初の実際の試みであるため、単純なことに気付いていないだけかもしれません。何かが間違っている、または奇妙であるとわかる場合は、それを指摘してください。

0 投票する
3 に答える
1382 参照

c++ - getaddrinfo() での Seg Fault

getaddrinfo 呼び出しでセグメンテーション違反が発生しましたが、その理由がわかりません。サーバーとクライアントの両方で発生します。一部のコード (サーバー側) は -

tcpserver.cpp-

主に〜

intコンストラクターに渡された は for ポートにキャストされますconst char*

gdb を実行すると、次のバックトレースが表示されます -

したがって、「アドレス 0x1356 範囲外」は、ポートに問題があると思わせますが、何が問題なのかわかりません。誰かが間違っていることを指摘できれば、私は感謝します。助けてくれてありがとう。

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

database - これらの要件を満たす最速のNoSQLデータベースは何ですか?

nosql次の要件を持つ最速のデータベースが欲しい

  • ApacheまたはBSDまたはその他の下でライセンスされている必要がありますが、GPLであってはなりません
  • Javaをサポートする必要があります
  • 埋め込みモードで動作するはずです
  • 高性能検索を提供する必要があります(単語内の文字検索用)
  • 圧縮オプションを提供する必要があります。

私の要件を満たすデータベースを知っているかどうかを提案してください。

0 投票する
5 に答える
2202 参照

bash - rm の GNU または BSD バージョンをテストするには?

の GNU バージョンにrmはクールな -I フラグがあります。マンページから:

Mac は次のことを行いません。

Mac に (GNU バージョンが) インストールされている人coreutilsもいれば、インストールされていない人もいます。先に進む前に、このコマンド ライン フラグを検出する方法はありますか? bash_profile に次のようなものを入れたい:

0 投票する
4 に答える
152 参照

c++ - パケットは定期的に送信されるとスタックされます

一定の間隔(毎秒)でTCPソケットを介してメッセージを送信しようとしています。メッセージ全体が送信されない場合や、2〜4個のメッセージがスタックされて一度に送信される場合があります。戻り値が0または<0の場合のifステートメントがありますが、それらは決して真ではありません。send()の正確な戻り値をチェックして、送信されたバイト数が少ないか多いかを確認するという明白なアプローチを試しました。送信するバイト数が少なくても、送信するパラメーターで指定した数を返すだけです(これは、送信するバイト数が少なくなるまでブロックを送信する場合に意味があります)。それで、「正しいサイズのパケットが送信されましたか?いいえ?-何かをします」と言う正確な方法はありますか?

0 投票する
3 に答える
1672 参照

tcp - WLAN上のTCPソケット

TCPソケットを使用してサーバーと1つのクライアント間で通信するプロジェクトがあります。今のところ、私は1台のコンピューターでこれを行っているので、両側でバインドおよび接続するアドレスに「127.0.0.1」のローカルアドレスを使用しましたが、正常に機能しました。これで、クライアントとして機能する2台目のコンピューターができましたが、それに応じてアドレスを変更する方法がわかりません。それらはインターネットに接続されていないネットワークを介して接続されています。コードがこのようになる前に-

サーバー-

クライアント -

簡単なはずですが、IPを変更して機能させる方法がわかりません。サーバーコンピューターのIPアドレスをこれらの行の引用符で設定してみました-if((status = getaddrinfo( "127.0.0.1"、port、&hints、&servinfo))!= 0)and unlink( "127.0.0.1");

次に、クライアントコードのアドレスをこの行のクライアントコンピューターのIPアドレスに変更します-if((status = getaddrinfo( "127.0.0.1"、port、&hints、&servinfo))!= 0)

私がそれをするときはいつでも、それは私に接続が拒否されたことを告げます。また、サーバーのアドレスをクライアントの行に入れ、クライアントのアドレスをサーバーの行に入れるという逆の方法を、他のいくつかの試みとともに試しました。この時点で、私はただ推測しているような気がします。では、誰かがこれを1台のコンピューターでローカルアドレスを使用する方法から2台のコンピューターに接続する方法に変更する方法を理解するのを手伝ってもらえますか?どんな助けでも大歓迎です。

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

c - BSD オペレーティング システムでの raw ソケット

私は C でいくつかのソケット コードを書いています。パケット ヘッダーを変更し、それらの送信方法を制御する必要があるため、未加工のソケット アプローチを採用しました。ただし、私が書いたコードは BSD システム (Mac OS X/Darwin、FreeBSD など) ではコンパイルできません。

私はこれについて多くの調査を行いましたが、BSD システムは Linux (または Windows) のように raw ソケットを処理できないことがわかりました。私が読んだところによると、bpf (バークレー パケット フィルター) を使用する必要があるようですが、bpf がどのように機能するか、生のソケットでどのように使用するかがわかりません。

誰かがこれに光を当てることができれば、私はとても興奮します:D

PS BSD環境で生のソケットがどのように処理されるかを示すソースコードがあれば、私も満足です。ガイドや説明である必要はありません。私はそれがどのように機能するかを見たいだけです。

0 投票する
3 に答える
574 参照

c++ - BSDソケットでIPアドレスを見つける方法は?

私は無線LAN上でBSDソケットを使用しています。サーバーに接続すると、サーバーコンピューターのIPアドレスがときどき変わることに気づきました。問題は、IPアドレスをリテラル文字列としてコードに入力することです。したがって、変更するたびに、コードを調べてそこで変更する必要があります。その時点でIPが何であれ使用するようにコードを変更するにはどうすればよいですか?これはサーバーコードの呼び出しです

クライアント側も同じです。両側のアドレスにNULLを試しましたが、クライアントが接続せず、「接続が拒否されました」というエラーが表示されます。

助けてくれてありがとう。