2016-07-12 59 views
1

我嘗試在我的跨平臺項目中使用https://github.com/emscripten-ports/SDL2_net wrriten在C++中,但是當我嘗試通過SDLNet_TCP_Open()打開TCP套接字時,函數返回錯誤「無法連接到遠程主機」,但服務器是okey,桌面和移動客戶端精細。SDL2_net emscripten

首先,我通過emscripten測試生成的.js和.html作爲本地瀏覽器的URL C:/ [PATH TO generated.html] /,但是我認爲在本地我沒有權限((因爲它在Android,我有同樣的錯誤,然後我寫清單請求權限後...工作)),但是當我上傳我的客戶端到http服務器,錯誤仍然存​​在。

有人有什麼想法嗎?

編輯。 我嘗試用-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.

https://kripken.github.io/emscripten-site/docs/compiling/Building-Projects.html

但我得到的錯誤:

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 - 顯示,港口,回報:

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) 

編輯2。

我從https://github.com/jbaicoianu/emscripten/tree/c46b429ede3f5e015fe3e460867e225c3e45ae95

embuilder.py,sdl-net.py,__init__py下載並注入到我的emscripten未來,建立過程中有沒有成功上提到的問題。 但主要問題仍然存在...我有「無法連接到遠程主機」錯誤。

乾杯, 盧克

+1

你確定你知道你在做什麼嗎?原始TCP/UDP套接字如何在瀏覽器中工作? – mostruash

+0

這不是在桌面上的原始套接字,代碼由Emscripten構建器解釋並且emscripten已經移植/映射了Unix socket.h(可能爲HTML5 WebSocket),基於winsock for windows和socket.h的SDL_net從unix組到非wnd系統。 順便說一下,不支持UDP套接字。 –

+1

但是你的服務器是一個原始的TCP服務器嗎?因爲websockets與原始TCP套接字完全不同。它首先發出一個HTTP請求,然後將HTTP連接升級到websocket。所以它有自己的協議。你的服務器是否處理websocket?這一切都假設SDL真正移植到瀏覽器Websocket。 – mostruash

回答

2

瀏覽器無法啓動普通的舊TCP。它使用websockets,基本上只是一個握手。當一切正常時,他們將連接升級到普通的舊TCP。

使用TCP - >的WebSocket網關這樣我們websockify

編輯:我錯了普通的舊TCP,WebSocket的是一個不同的協議通過TCP,但websockify可以翻譯。

+0

但websockify我實現到服務器或emscription客戶端? –

+0

您在服務器上運行websockify,並在代碼中放置#ifdef EMSCRIPTEN以使用websockify端口而不是普通TCP端口 – jsaak

+0

Okey但客戶端仍然是純SDL_net,並且我使用帶有服務器ip和websockify端口的SDLnet_TCP_Open()是? –