这是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设备都无法正常工作。