2016-11-04 7 views
0

私はAndroidアプリケーションでデータをPython Webサーバーから受信する必要があります。最初にテストするローカル環境をセットアップしました。パイソンサーバーはローカルにホストされていました。ソケットを使用して接続を作成すると、サーバーソケットはAndroidアプリケーションにあり、クライアントはPythonサーバーです。私は基本的に、サーバーからアプリケーションへのステータス更新を受け取る必要があります(それは、ボレーのPOSTや改造のようなものです)。アンドロイド側についてはandroid serversocket 4gネットワークにアクセスできません

、私は基本的に... https://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/

をこのページに記事を踏襲しているここでのpythonサーバーでクライアントソケットです...

@app.route('/clientMessage', methods=['GET', 'POST']) 
def clientMessage(): 
    address = request.values.get('address') 
    host = address 
    port = 6667 

    #create an INET, STREAMing socket 
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    s.connect((host, port)) 

    #send message using socket 
    s.sendall("please work\n") 

    return "msg sent" 

ここどこアンドロイドMainActivityですリスニングサーバソケットを持っているスレッド

アンドロイド電話がpythと同じ内部/ローカルネットワークにある場合は問題ありませんオンサーバ。ワイヤレスをオフにして4Gに接続すると、pythonはこのエラーを吐き出します。私はそれが違いがある場合は、Macを使用しています。

私はので、私はトラフィックがネットに自分のネットワークの外になっているが、それは到達できない理由を私は理解することはできません知っている私のルータにそのポートを転送しており、それを介してサイトにpingを実行できる
~/Documents/androidProjects/pythonExamples$ python serverSockets.py 
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 
[2016-11-04 09:45:05,876] ERROR in app: Exception on /clientMessage [GET] 
Traceback (most recent call last): 
File "/Library/Python/2.7/site-packages/flask/app.py", line 1988, in wsgi_app 
response = self.full_dispatch_request() 
    File "/Library/Python/2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request 
rv = self.handle_user_exception(e) 
    File "/Library/Python/2.7/site-packages/flask/app.py", line 1544, in handle_user_exception 
reraise(exc_type, exc_value, tb) 
    File "/Library/Python/2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request 
rv = self.dispatch_request() 
    File "/Library/Python/2.7/site-packages/flask/app.py", line 1625, in dispatch_request 
return self.view_functions[rule.endpoint](**req.view_args) 
    File "serverSockets.py", line 66, in clientMessage 
s.connect((host, port)) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth 
return getattr(self._sock,name)(*args) 
error: [Errno 51] Network is unreachable 
127.0.0.1 - - [04/Nov/2016 09:45:05] "GET /clientMessage?address=100.74.228.97 HTTP/1.1" 500 - 

アンドロイドデバイス。私はさまざまなポートを試してみました。使用する必要がある特定のポートがあるかもしれません。これはソケットで遊ぶのは初めてのことですが、私はまだ新人アンドロイドの開発者です。私はherokuでホストされている公開されたpythonサーバーにこれを移動すると、セキュリティとSSLについてもっと考えなければならないと確信していますが、公衆ネットワーク上でAndroidデバイスにアクセスできない理由?

+0

127.0.0.1 ????クライアントもAndroid搭載端末で動作していますか? – greenapps

+0

どのipを実際に使用しますか?このループバックアドレスは機能しません。 – greenapps

+0

'私のルータのそのポートを転送しました'。正確に何に?どのIPアドレスに? Wi-Fiを使用している場合、これは必要ありません。 – greenapps

答えて

1

あなたのアンドロイドデバイスがモバイル接続されている場合は、モバイルプロバイダが着信接続をブロックするため、インターネット接続が実行されているサーバーにはインターネットからアクセスできません。

+0

ありがとう、それは私が知る必要があったものです。私は方向を変更し、herokuでホストされているPythonサーバー上のサーバーソケットを持って、クライアントソケットを使用してアンドロイドアプリで接続を作成する必要があると信じています。エンドポイントにヒットしたときに、Webサーバーからアプリに送信されるUIを更新するための情報が必要になります。 – salminnella

関連する問題