問題タブ [enet]

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 に答える
1950 参照

c++ - ENet による NAT ホール パンチング

しばらくの間、信頼性を提供する単純な UDP C++ ライブラリを探していました。ドキュメントでNATホールパンチングのサポートが見つからないことを除いて、完璧に見えるENetに出くわしました。インターネット上では数人が議論しているようですが、私はまだそれが可能かどうかについて明確な答えを見つけていません.

クライアントに外部 IP とポートを配布するように構成されたサードパーティ サーバーが既にあります。

可能であれば、誰かがプロセスを説明する疑似コード/手順を提供できますか?

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

ios - Xcode で既存の C コードを使用して iOS 用の静的ライブラリを作成する

質問の短いバージョン:

したがって、基本的に私がやろうとしているのは、C で記述された既存のライブラリ ( https://github.com/lsalzman/enet ) を取得し、それを iOS 用の静的ライブラリに変換することです。

Xcodeでこれを達成する方法を段階的に理解しやすいものを探しています。

長いバージョン:

Objective-C ( http://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial ) で記述された単純な静的ライブラリを作成するためのチュートリアルをいくつか確認しました。そこで何が起こっているのか理解できますが、C で書かれた既存のコードでこれを行う方法を理解できていません。

近づいていると思いますが、よくわかりません。

  1. まず、xcode で「Cocoa Touch Static Library」プロジェクトを作成します。
  2. すべてのenet .hおよび.cファイルを追加します
  3. ビルド設定の「ユーザーヘッダー検索パス」にenetが含まれていることを確認してください。
  4. ビルドをヒット - コンパイルされます!

生成された .a ファイルは 517kb なので、この時点で enet をビルドしていると確信しています。

ただし、現在の私の問題は、ライブラリのヘッダー ファイルが基本的に空であることです。

私は、enet ライブラリと通信する Objective-C でラッパーを作成する必要があると考えています。または、enet.h がこのライブラリへの「エントリ ポイント」であり、xcode の pre-生成された .h/.m ファイル。しかし、それを行う方法がよくわかりません。理想的には、任意の種類のラッパーをスキップして、enet ライブラリが既に提供しているものを使用したいと思います。

ご覧いただきありがとうございます。

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

c - リアルタイムのマルチプレイヤー ゲームの遅延補正

簡単に言うと、私はリアルタイムのマルチプレイヤー ゲームに取り組んでいます。私のゲームでは、クライアントは更新された位置と速度のデータを 20 Hz の頻度でサーバーに送信します。以下のコード例では、LuaJIT FFI を使用して、Lua テーブルから C 構造体にデータを変換しています。これは、ネットワーク経由でデータを転送する気の利いた方法です。

サーバーがパケットを受信すると、データを調整して、その特定のクライアントとそれ自体の間の遅延を補正しようとします。

データが正規化されると、更新された位置情報が他のすべてのクライアントにブロードキャストされます。

他のクライアントが最終的にパケットを取得すると、サーバーとの待ち時間に基づいてデータを調整します。

ここに問題があります。オブジェクトは非常にぎくしゃくしています。パケットを受信するたびに、他のプレイヤーは少し前または少し後ろにワープするため、遅延補正がオフになっているようで、補間がオフになっているようです。おそらく、誰かが私のコードの明らかな欠陥を指摘したり、プロセスがどのように機能するかについての私の理解を指摘したりできますか?

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

c - TFTP クライアント (ENET ベース) がリモート TFTP サーバーに接続しない

C (Windows、Visual Studio 2005) で TFTP クライアントを実装しようとしています。

TFTP クライアントは、ポート 69 でリモート TFTP サーバー アドレスに接続することになっています。

TFTP クライアントはネットワーク関連に ENET API を使用していますが、動作させることができません。

TFTP クライアントが「CONNECTED」状態に切り替わらず、「CONNECTING」状態のままになります。

Windows 7 でネイティブ Windows TFTP クライアント (cmd、Windows コンソール) を実行すると、TFTP サーバーへの接続に問題はなく、問題なくリモート ファイルを取得できます。

したがって、私は以下のコードで何か間違ったことをしているに違いありません。誰かが私が間違っていることを教えてくれることを願っています:

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

c - インクルードの無関係なエラーを報告する GCC

プロジェクトに新しいファイルを追加しました。

が存在する場合、関連includeのないファイルが大量に取得error: expected ';', ',' or ')' before numeric constantされます。を取り外して代わりにinclude使用すれば、すべて問題ありません。void * peerenet ライブラリは別のソース ファイルに含まれており、正常に動作します。私は enet 1.3.13 (最新) を使用しており、そのヘッダー ガードが配置されているようです。これは gcc 4.9.2 の下にあります。

記録のために、エラーは次の場所で発生していPoint.hます:

私はそれが何か単純だと確信しています - 私が間違っていることは何か分かりますか?

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

c++ - ENet c++ ライブラリの最大パケット サイズ

ENetライブラリを使用しようとしています。これは、信頼できる UDP ソケットでプログラミングするためのものです。Feature公式サイトのタブには次のように書かれています。

ENet は、サイズに関係なくパケットを送受信します。大きなパケットは、適切なサイズの多数の小さなパケットに断片化され、配信用に元のパケットを復元するために外部ホストで再構成されます。このプロセスは、開発者に対して完全に透過的です。

単純なサーバー/クライアントでテストしました。1k データをサーバーに送信しても問題ありませんが、データが 2k に達するとサーバーに受信されないようです。

私のコード:

// サーバー

//クライアント

コードに問題はありますか?

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

linux - SIGSEGV、セグメンテーション違反。Linuxでのみ、Windowsで動作します

なんらかの理由で、Linux でのみセグメンテーション違反エラーが発生します。これは、長さが 17 文字以上のパケットでのみ発生します。Enetライブラリを使用してパケットを送信しています。誰でも私を助けることができます。ここで何が欠けているのかわかりません...

gdb 出力のスクリーンショットを これはgdb出力のスクリーンショットです 次に示します。サーバー側のサンプルを次に示します。

以下は、クライアントによってパケットが作成され、サーバーに送信される方法です。

コードサンプルが十分でない場合は、さらに提供できます。

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

ios - ENet : iOS 実デバイスからローカル サーバーへの接続に失敗しましたが、デスクトップ クライアントを使用すると機能します

iPhone 5 iOS 8.3 である iOS デバイスでこの素晴らしいライブラリをチェックし続けると 、xCode から実行されているサーバーに接続しようとすると、
奇妙な (またはそうでない) 接続エラーが発生します。
また、iPhoneアプリはxcodeからも実行されています。
この線 :
if (enet_host_service(client, &event, 1000) > 0 && event.type == ENET_EVENT_TYPE_CONNECT)

パスせずにジャンプします:
enet_peer_reset(peer);

しかし、デスクトップから単純なクライアント/サーバーアプリとしてこのコードを実行すると、すべてが正常に機能します。
これは私がいくつかのインターネットサイトから取ったコードです。
HOST を自分の Mac に設定したことに注意してくださいecho $HOSTNAME。たぶんこれが問題で、iPhone が Mac に接続できません..
どうすれば確認できるのかわかりません。
ありがとう
コードは次のとおりです。

クライアント デスクトップ:

クライアント Iphone デバイス (cpp ゲーム エンジンの一部) は正常にコンパイルされます。


サーバ