0

JAVA サーバーを Android アプリケーションに接続しようとしていますが、接続できません.....

これは私のサーバーです....

package com.example.androidserver;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerMain 
{
public static void main(String []args)
{
    ServerSocket ss;
    try 
    {
        ss = new ServerSocket(7654);
        Socket socket = ss.accept();

        boolean t = socket.isConnected();
        if(t)
        {
            System.out.println("Client connected");
        }
    }
    catch (IOException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}
}

そして、これはクライアントです...

package com.example.androidclient;

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View; 
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

Button send;
EditText et1;
Socket socket;
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new Thread()
    {
        public void run()
        {
            try
            {
                socket = new Socket("localhost", 7654);
                boolean t = socket.isConnected();
                if(t)
                {
                    Toast.makeText(getBaseContext(), "Connected", Toast.LENGTH_LONG).show();
                }
            } 
            catch (UnknownHostException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }.start();
    send = (Button)findViewById(R.id.button1);
    et1= (EditText)findViewById(R.id.editText1);

    send.setOnClickListener(new OnClickListener(){

        public void onClick(View v) {
            String str;
            str = et1.getText().toString();
            Toast.makeText(getBaseContext(), str, Toast.LENGTH_LONG).show();
        }});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}

XML ファイル..

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" >

    <requestFocus />
</EditText>

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/editText1"
    android:text="Send" />

</RelativeLayout>

何が問題なのかわかりませんでした...クライアントとサーバーが接続されていません....修正を手伝ってください...

4

2 に答える 2

0

あなたの問題はここにあると思います: socket = new Socket("localhost", 7654); なぜローカルホストなのですか? サーバーの IP アドレスである必要があります。

そして別の問題があります:

Toast.makeText(getBaseContext(), "Connected", Toast.LENGTH_LONG).show();

非 UI スレッドからトーストを表示することはできません。これを読む。

于 2013-01-29T09:56:58.273 に答える
0

localhostは、コードが実行されているコンピューターを指します。Android アプリケーションのコンテキストでは、開発用コンピューターではなく、電話またはエミュレーターです。

シナリオをテストする最善の方法は、開発マシンが接続されているのと同じローカル ワイヤレス ネットワークに電話を接続し、. の代わりにマシンの IP アドレスを使用することですlocalhost

于 2013-01-29T09:57:25.003 に答える