0

私が書いたCサーバーにAndroidクライアントを接続するのに問題があります。同様の質問の別のスレッドを見つけましたが、残念ながら、狭すぎると言って閉じられました。これは私にも関係があり、オンラインで見つけたすべてのサンプルコードには、AndroidクライアントがAndroidサーバーに接続しているだけなので、誰かがここで答えてくれることを願っています。私のクライアントコードは次のとおりです。

package edu.upenn.seas.cis542;

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.os.Debug;
import android.os.Handler;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class Try_uiActivity extends Activity
{

//private EditText serverIp;
private Button connectPhones;
private String serverIpAddress = "MY IP ADDRESS";
private boolean connected = false;
private Handler handler = new Handler();
final int SERVERPORT = 8080;



/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    //NumberPicker t1 = (NumberPicker)findViewById(R.id.numberPicker3);
    //t1.setRange(1, 5);
    setContentView(R.layout.main);

}

/*
 * When the Submit button is clicked, this method
 * gets called.
 */  


public void onSubmitClick(View view) {



    int item1, item2, item3;

    NumberPicker t1 = (NumberPicker)findViewById(R.id.numberPicker1);
    item1 = t1.getCurrent();

    NumberPicker t2 = (NumberPicker)findViewById(R.id.numberPicker2);
    item2 = t2.getCurrent();

    NumberPicker t3 = (NumberPicker)findViewById(R.id.numberPicker3);
    item3 = t3.getCurrent();

    String userInput = "" + item1 + item2 + item3;

    //Log.out("Before connecting");

    if (!connected) {
        try {
            InetAddress serverAddr = InetAddress.getByName(serverIpAddress);

            Toast toast=Toast.makeText(this, serverAddr.toString(), Toast.LENGTH_LONG);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();


            Socket socket = new Socket(serverAddr, SERVERPORT);
            connected = true;
        } catch (Exception e) {
            Toast toast=Toast.makeText(this, "Error2", Toast.LENGTH_LONG);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();

            e.printStackTrace();

            connected = false;
        }
    }
}




}

ソケットを作成するだけですでにエラーが発生するため、接続後に実行したいことを省略しました。私のCサーバーは、Androidプログラムが接続しているのと同じポートで接続を開きます。Javaクライアントファイルを使用してサーバーをテストしたところ、正常に機能しました。誰かがこれに対する解決策を知っていますか?Androidマニフェストにも権限を追加しましたが、問題は解決しませんでした。ありがとう!

4

0 に答える 0