我正在Android应用程序和C#Windows窗体应用程序之间使用蓝牙通信。 Android应用程序用作客户端,C#应用程序用作服务器。我只能处理服务器(笔记本电脑)上的连接,当我断开连接并尝试再次连接时,似乎没有任何事情发生。我认为客户端工作正常,因为我已经用另一个移动设备进行了测试,并且该错误在服务器代码中。Android应用程序和C#窗体应用程序之间的蓝牙通信
这是服务器代码:
public partial class Form1 : Form
{
Thread connectserver;
Stream mstream;
BluetoothClient client;
BluetoothListener bluelisten;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (serverstart)
{
updateui("server already started");
}
connectasserver();
}
private void connectasserver()
{
connectserver=new Thread(new ThreadStart (serverconnectedthread));
connectserver.Start();
}
Guid muuid = new Guid("00001101-0000-1000-8000-00805F9B34FB");
bool serverstart = false;
public void serverconnectedthread()
{
serverstart = true;
updateui("waiting for connections of clients\n");
bluelisten = new BluetoothListener(muuid);
bluelisten.Start();
client = new BluetoothClient();
client = bluelisten.AcceptBluetoothClient();
updateui("client has connected\n");
mstream=client.GetStream();
while(true)
{
try
{
byte[] recieved = new byte[1024];
mstream.Read(recieved, 0, recieved.Length);
updateui("recieved: " + Encoding.ASCII.GetString(recieved));
byte[] sent = Encoding.ASCII.GetBytes(" hello world\n");
mstream.Write(sent, 0, sent.Length);
}
catch(IOException except)
{
updateui("client has been disconnected\n");
connectserver.Abort();
client.Close();
mstream.Flush();
break;
}
}
}
private void updateui(string mess)
{
Func<int> del = delegate()
{
textbox3.AppendText(mess + System.Environment.NewLine);
return 0;
};
Invoke(del);
}
private void label1_Click(object sender, EventArgs e)
{
}
private void textBox3_TextChanged()
{
}
}
你的问题似乎不够清楚,你的意思是你必须重新启动c#软件断开连接后再次连接? – Ogbe
我想在连接第一台设备连接的哟服务器后,再次连接到同一设备或其他设备,并且这种情况在此代码中不会发生。此代码只能有一个与它连接,并断开连接后,它不能听任何其他设备或同一设备的任何其他连接 – nayirmicheal
当你尝试第二次尝试连接时会出现哪个错误? – Ogbe