C#tcpサーバ側+Android TCPクライアント-簡単な例

6198 ワード

すべてネット上で探した簡単な例で、自分の望む機能を実現します.残しておく.
C#:サーバ側、簡単にTcpListenerを使用:
 
static void Main(string[]args){TcpListener server=null;Console.Write(「リスニングのポート番号を入力してください:」);string strPort=Console.ReadLine();try{int port=Convert.ToInt 32(strPort);                 IPEndPoint listenPort = new IPEndPoint(IPAddress.Any, port);                 server = new TcpListener(listenPort);//TcpListenerの新しいインスタンスserverを初期化する.Start();//クライアントの要求をリスニングし始めるByte[]bytes=new Byte[256];//読み込まれたデータString data=nullをキャッシュします.while(true)//ループリスニング{Console.Write("サービス開始済み");TcpClient client=server.AcceptTcpClient();Console.WriteLine("接続済み!");                    data = null;                     NetworkStream stream = client.GetStream();//読み出しおよび書き込みのためのストリームオブジェクトint iを取得する.                    while ((i = stream.Read(bytes, 0, bytes.Length)) != 0){//借宿バイトのデータをUTF 8文字列data=System.Text.Encoding.UTF 8.GetString(bytes,0,i);Console.WriteLine("受信メッセージ:{0},data);                        Console.Write(「メッセージの送信:」);                        data = Console.ReadLine();//サーバはメッセージbyte[]msg=Systemを送信する.Text.Encoding.UTF8.GetBytes(data);                         stream.Write(msg, 0, msg.Length);                     }                     client.Close();                 }             }             catch (Exception e)             {                 Console.WriteLine(e.Message);             }             finally             {                 server.Stop();             }             Console.WriteLine(「任意のキーを押して終了...」);        }
 
Android:
アクセス権の付与:
シンプルなレイアウト:

    

    
MainActivity:
public class MainActivity extends AppCompatActivity {
    Button connect ;
    Button send;
    EditText msg;

    String sendData = "";
    boolean RD = false;//             

    OutputStream OutputStream = null;     //       ,      
    InputStream InputStream = null;          //       ,      
    Socket Socket = null;//Socket
    String TAG = "TCPtest";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        connect = findViewById(R.id.connectBtn);
        send = findViewById(R.id.sendBtn);
        msg = findViewById(R.id.editText);

        connect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Connect_Thread Connect_thread = new Connect_Thread(); //         ,     socket
                Connect_thread.start();
                Log.d(TAG, "     ");
            }
        });
        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendData = msg.getText().toString();
                ThreadSendData t2 = new ThreadSendData();   //        ,      
                t2.start();
            }
        });
    }

    class Connect_Thread extends Thread    //     Socket  
    {
        public void run()
        {
            try {

                if (Socket == null)                //  socket   ,      
                {
                    Socket = new Socket("192.168.1.100", 2029);; //  socket         socket
                    InputStream = Socket.getInputStream();//  socket        
                    OutputStream = Socket.getOutputStream();
                    ThreadReadData t1 = new ThreadReadData();//         
                    t1.start();
                }
            }
            catch (Exception e) //           
            {
                e.printStackTrace();
            }
        }
    }

    class ThreadReadData extends Thread    //               
    {
        public void run()
        {
            String textdata;      //                  
            while (RD)             //  RD             
            {
                try
                {
                    final byte[] ReadBuffer = new byte[2048];  //       ,       ,      2048  
                    final int ReadBufferLengh;     //       

                    //                   
                    //ReadBuffer     ,         
                    //                  
                    ReadBufferLengh = InputStream.read(ReadBuffer);
                    if (ReadBufferLengh == -1)  //      ,   -1        
                    {
                        RD = false;//         
                        Socket.close();
                        Socket = null;
                        Log.d(TAG, "run:          ");
                    } else {
                        //                
                        textdata = new String(ReadBuffer,0,ReadBufferLengh,"GB2312");//      
                        Log.d(TAG,new String(textdata.getBytes(),"UTF-8"));//  UTF-8          
                    }
                } catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        }
    }

    class ThreadSendData extends Thread      //       
    {
        public void run()
        {
            try
            {
                OutputStream.write(sendData.getBytes());                //        
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }
}