클라이언트 (내 안드로이드 장치에서 실행)와 서버 (내 PC에서 실행 중) 사이를 연결하려면 asynctask를 사용하고 있습니다. 내가 응용 프로그램을 실행하면 버튼을 클릭하여 연결해야하며, 클라이언트가 연결되어 있지만 나타나지 않으면 내 서버 PC 프로그램이 콘솔 장치에 나를 표시해야합니다. 내 안드로이드 클라이언트가 내 PC 서버에 연결하지 않습니다.asynctask를 사용하는 안드로이드 소켓 클라이언트 PC 서버
안드로이드 클라이언트 :
public class MainActivity extends ActionBarActivity {
Button send;
EditText txt;
TextView testo;
String response = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
send = (Button) findViewById(R.id.send);
//txt = (EditText) findViewById(R.id.editText);
testo = (TextView) findViewById(R.id.textView1);
}
class AddStringTask extends AsyncTask<Void, String, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... unused) {
try {
Socket socketClient = new Socket("10.10.0.151",4321); //ipaddress of my pc server
} catch (UnknownHostException e) {
e.printStackTrace();
response = e.toString();
} catch (IOException e) {
e.printStackTrace();
response = e.toString();
}
testo.setText(response);
return (null);
}
@SuppressWarnings("unchecked")
@Override
protected void onProgressUpdate(String... item) {
}
@Override
protected void onPostExecute(Void unused) {
testo.setText(response);
}
}
public void buttonClick(View v){
new AddStringTask().execute();
}
}
PC 서버 : 내가 클라이언트를 실행하면 난 그냥
<uses-permission android:name="android.permission.INTERNET"/>
을 추가 한 제의 AndroidManifest.xml에서
public class Server {
public static Socket connection;
public static void main(String[] args) throws IOException {
System.out.println("Starting server on port number: 4321...");
ServerSocket server = new ServerSocket(4321);
while(true){
System.out.println("Waiting for clients...");
connection = server.accept();
System.out.println("Connected to: "+connection.getInetAddress().getHostAddress());
connection.close();
}
}
}
내 서버의 PC에서 콘솔 연결 장치를 볼 수 있지만 안드로이드 작동하지 않습니다 .. 왜?
감사합니다.
서버의 IP가 올바른지, PC의 방화벽을 해제했는지 확인하십시오 (연결을 허용하지 않는 경우도 있음) –