初心者なので質問内容がおかしかったら申し訳ございません。
Android(クライアント)とPC(サーバー)でのSocket通信を目標にしています。
こちらのブログを参考にさせてもらい作成しているのですが、Android Studioのエミュレーターでは正常に動作するのですが実機で確認すると反応しなくて困っています。
実機で確認する場合には別にしないといけないことなどあるのでしょうか?お力を貸していただけると幸いです。
クライアント
Java
1import android.os.Bundle; 2import android.view.View; 3import android.widget.EditText; 4 5import androidx.appcompat.app.AppCompatActivity; 6 7import java.io.IOException; 8import java.io.PrintWriter; 9import java.net.Socket; 10import java.net.UnknownHostException; 11 12public class MainActivity extends AppCompatActivity { 13 /** Called when the activity is first created. */ 14 @Override 15 public void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 18 } 19 20 public void onButtonClick(View v){ 21 // ボタンを押したときのコード 22 Runnable sender = new Runnable() { 23 @Override 24 public void run() { 25 String address = 26 ((EditText) findViewById(R.id.txtIPAdress)).getText().toString(); 27 String strPort = 28 ((EditText) findViewById(R.id.txtPort)).getText().toString(); 29 int port = Integer.parseInt(strPort); 30 31 Socket socket = null; 32 33 try { 34 socket = new Socket(address, port); 35 PrintWriter pw = new PrintWriter(socket.getOutputStream(), true); 36 37 String sendTxt = 38 ((EditText) findViewById(R.id.txtSend)).getText().toString(); 39 pw.println(sendTxt); 40 41 } catch (UnknownHostException e) { 42 e.printStackTrace(); 43 } catch (IOException e) { 44 e.printStackTrace(); 45 } 46 47 if (socket != null) { 48 try { 49 socket.close(); 50 socket = null; 51 } catch (IOException e) { 52 e.printStackTrace(); 53 } 54 } 55 } 56 }; 57 Thread th = new Thread(sender); 58 th.start(); 59 } 60}
サーバー
Java
1import java.io.BufferedReader; 2import java.io.InputStreamReader; 3import java.io.PrintWriter; 4import java.net.InetSocketAddress; 5import java.net.ServerSocket; 6import java.net.Socket; 7import java.io.IOException; 8import java.io.PrintWriter; 9import java.net.Socket; 10import java.net.UnknownHostException; 11 12public class TcpServerLesson { 13 14 static final int PORT = 54321; 15 16 /** 17 * @param args 18 */ 19 public static void main(String[] args) { 20 21 ServerSocket serverSocket = null; 22 23 try { 24 serverSocket = new ServerSocket(PORT); 25 26 boolean runFlag = true; 27 28 while(runFlag){ 29 30 System.out.println("start wait..."); 31 32 // 接続があるまでブロック 33 Socket socket = serverSocket.accept(); 34 35 BufferedReader br = 36 new BufferedReader( 37 new InputStreamReader(socket.getInputStream())); 38 39 String str; 40 while( (str = br.readLine()) != null ){ 41 System.out.println(str); 42 43 // exitという文字列を受け取ったら終了する 44 if( "exit".equals(str)){ 45 runFlag = false; 46 } 47 } 48 49 if( socket != null){ 50 socket.close(); 51 socket = null; 52 } 53 } 54 55 } catch (IOException e) { 56 e.printStackTrace(); 57 } 58 59 60 if( serverSocket != null){ 61 try { 62 serverSocket.close(); 63 serverSocket = null; 64 } catch (IOException e) { 65 e.printStackTrace(); 66 } 67 } 68 } 69 70}
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー