2016-07-12 4 views
1

クロスプラットフォームのwrritenをC++で使用しようとしましたが、SDLNet_TCP_Open()でTCPソケットをオープンしようとすると、関数が "リモートホストに接続できませんでした"というエラーメッセージを表示しますが、サーバーはokey、良い。SDL2_net emscripten

最初に私は、ブラウザでローカルのブラウザでemscriptenで生成された.jsと.htmlをC:/ [PATH TO generated.html] /でテストしましたが、ローカルにはPermission(アンドロイド、私は同じエラーがある、その後、私はクライアントのhttp-serverにアップロードするとき、エラーがまだ存在する)の後に許可のマニフェスト要求で書いた)。

誰かご存知ですか?

EDIT。 は私がhttps://kripken.github.io/emscripten-site/docs/compiling/Building-Projects.html

から-s USE_SDL_NET = 2

Note

SDL_net has also been added to ports, use it with -s USE_SDL_NET=2. To see a list of all available ports, run emcc --show-ports.

と試みるが、私はエラーました:

WARNING:root:Assigning a non-existent settings attribute "USE_SDL_NET" 
WARNING:root: - did you mean one of USE_SDL_TTF, USE_SDL, USE_SDL_IMAGE? 
WARNING:root: - perhaps a typo in emcc's -s X=Y notation? 
WARNING:root: - (see src/settings.js for valid values) 

EMCC --show-ポート、リターン:

Available ports: 
    zlib (USE_ZLIB=1; zlib license) 
    libpng (USE_LIBPNG=1; zlib license) 
    SDL2 (USE_SDL=2; zlib license) 
    SDL2_image (USE_SDL_IMAGE=2; zlib license) 
    ogg (USE_OGG=1; zlib license) 
    vorbis (USE_VORBIS=1; zlib license) 
    bullet (USE_BULLET=1; zlib license) 
    freetype (USE_FREETYPE=1; freetype license) 
    SDL2_ttf (USE_SDL_TTF=2; zlib license) 

EDIT2。

私は、プロセスは、上に述べた問題なく成功しているの構築、https://github.com/jbaicoianu/emscripten/tree/c46b429ede3f5e015fe3e460867e225c3e45ae95

embuilder.py、sdl-net.py、__init__pyからダウンロードして、私の次のemscriptenに注入します。 しかし、主な問題はまだ存在します... "リモートホストに接続できませんでした"というエラーがあります。

乾杯、 ルーク

+1

あなたは何をやっているのか分かりませんか?ローTCP/UDPソケットはブラウザでどのように動作しますか? – mostruash

+0

これはデスクトップのrawソケットではなく、コードはEmscripten builderによって解釈され、emscriptenはUNIXのsocket.h(おそらくHTML5 WebSocket)に移植/マッピングされています.Winsock for Windowsとsocket.hをベースにしたSDL_netはUNIXグループから非wndシステム。 ところで、UDPソケットはサポートされていません。 –

+1

あなたのサーバーはraw TCPサーバーですか? Webソケットはraw TCPソケットとはまったく異なっているためです。まず、HTTP接続をwebsocketにアップグレードするよりも、HTTPリクエストを行います。したがって、独自のプロトコルがあります。あなたのサーバーはウェブソケットを扱っていますか?これは、SDLが実際にブラウザのWebソケットに移植されていることを前提としています。 – mostruash

答えて

2

ブラウザは、昔ながらのTCPを開始することはできません。それは基本的にちょうど握手であるウェブソケットを使用します。すべて正常であれば、接続は通常の古いTCPにアップグレードされます。

は、TCPを使用 - >のWebSocketゲートウェイなど、私たちwebsockify

編集:私は、昔ながらのTCPについて間違っている、のWebSocketはTCP上の異なるプロトコルであるが、websockifyを翻訳することができます。

+0

しかし、私はサーバーまたはemscriptionクライアントに実装するwebsockify? –

+0

サーバーでwebsockifyを実行し、#ifdef EMSCRIPTENをコードに入れて、通常のTCPポートの代わりにwebsockifyポートを使用します。 – jsaak

+0

クライアントはまだ純粋なSDL_netであり、サーバーIPとWebSockifyポートでSDLnet_TCP_Open()を使用しますか? –

関連する問題