Android客户端和C#服务器无法连接

时间:2016-11-27 16:43:09

标签: c# android sockets server

这是android客户端代码:

Button btn1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn1 = (Button)findViewById(R.id.btn1);
    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Tocket.start();
        }
    });
}
private Thread Tocket = new Thread(){
    public void Run(){
        try {
            Socket socket = new Socket("Correct server_ip", 10004);
            PrintWriter out;
            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
            out.write("request");
            out.flush();

        }catch (Exception e){
            Log.e("ClientActivity", "S: Error", e);
        }
    }
};

这是服务器代码:

    private Socket server;
    private Socket client;

    private void button1_Click(object sender, EventArgs e)
    {
        if (this.Text == "ON") return;

        this.Text = "ON";
        server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        MessageBox.Show(Get_MyIP());
        server.Bind(new IPEndPoint(IPAddress.Any, 10004));
        server.Listen(20);

        new Thread(delegate()
        {
            try
            {
                while (true)
                {
                    client = server.Accept();
                    Invoke((MethodInvoker)delegate
                    {
                        richTextBox1.Text += client.LocalEndPoint + "has been connected\r\n";
                    });

                    new Thread(delegate()
                    {
                        while (true)
                        {
                            byte[] buffer = new byte[1024];
                            try
                            {
                                client.Receive(buffer);
                                string unde_buffer_string = Encoding.UTF8.GetString(buffer).Replace("\0", "");
                                if (unde_buffer_string.Length > 0)
                                {
                                    Invoke((MethodInvoker)delegate
                                    {
                                        richTextBox1.Text += client.LocalEndPoint + " send :" + unde_buffer_string + "\r\n";
                                    });
                                }
                                else if (!client.Connected && unde_buffer_string.Length == 0)
                                {
                                    client.Disconnect(true);
                                }
                            }
                            catch (Exception)
                            {
                            }
                            finally
                            {
                                client.Close();
                            }
                        }
                    }).Start();
                }
            }
            catch (Exception)
            {
                Invoke((MethodInvoker)delegate
                {
                });
            }
        }).Start();
    }

客户端代码在android java中,服务器代码在C#中。但我无法连接两者。

我在androidmanifest.xml中添加了<uses-permission android:name="android.permission.INTERNET"/>并设置了adb本地端口设置。

没有其他问题,但Android客户端没有连接。 我可以看到“客户端尚未准备好”的消息。在虚拟设备上调试,两个Android设备都无法正常工作。

0 个答案:

没有答案
相关问题