c#tcp无线电应用
我有一个tcp应用程序 我需要做的是设置几个实例(完成)并向每个服务器发送命令。我希望当给定一个特定命令时,服务器将侦听网络上的任何操作并报告数据,并且仍然能够向该服务器或其他服务器发送其他命令。 我的代码: 无线电实例:c#tcp无线电应用,c#,tcp,tcpclient,C#,Tcp,Tcpclient,我有一个tcp应用程序 我需要做的是设置几个实例(完成)并向每个服务器发送命令。我希望当给定一个特定命令时,服务器将侦听网络上的任何操作并报告数据,并且仍然能够向该服务器或其他服务器发送其他命令。 我的代码: 无线电实例: instances = new radio1[list.Count]; for (int j = 0; j < list.Count; j++) {
instances = new radio1[list.Count];
for (int j = 0; j < list.Count; j++)
{
instances[j] = new radio1(list[j].Key, list[j].Value);
// MessageBox.Show(instances[j].getIP());
}
instances=newradio1[list.Count];
对于(int j=0;j
发送命令
while ((line = sr.ReadLine()) != null)
{
var splitinig = line.Split(',');
// MessageBox.Show(splitinig.Length.ToString());
for (int i = 0; i < instances.Length; i++)
{
// instances[i].sendCMD(listen);
if (splitinig[0] == instances[i].getRadio())
{
if (splitinig[1].ToString() == "ptt1")
instances[i].sendCMD(ptt1, splitinig[2].ToString());
else if ((splitinig[1].ToString() == "ptt2"))
instances[i].sendCMD(ptt2, splitinig[2].ToString());
else
instances[i].sendCMD(ptt0);
}
}
//MessageBox.Show(sw.Elapsed.ToString());
}
for (int i = 0; i < instances.Length; i++)
{
instances[i].sendCMD(stoplisten);
instances[i].closeConnection();
}
while((line=sr.ReadLine())!=null)
{
var splitinig=line.Split(',');
//Show(splitinig.Length.ToString());
for(int i=0;i
无线电类发送命令:
public void sendCMD(string cmd)
{
//String str = ;
Stream stm = tcpclnt.GetStream();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] ba = asen.GetBytes(cmd);
Console.WriteLine("Transmitting.....");
stm.Write(ba, 0, ba.Length);
/* if (cmd == "$rmdbgvoicestats!")
{
bTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent1);
//bTimer.Interval = 100;
bTimer.Enabled = true;
}*/
while (tcpclnt.Connected)
{
byte[] bb = new byte[tcpclnt.ReceiveBufferSize];
int k = stm.Read(bb, 0, tcpclnt.ReceiveBufferSize);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < k; i++)
sb.Append((Convert.ToChar(bb[i])));
Console.WriteLine(" ");
writeLog(cmd, sb.ToString());
}
}
public void sendCMD(字符串cmd)
{
//字符串str=;
Stream stm=tcpclnt.GetStream();
ascienceoding asen=新的ascienceoding();
字节[]ba=asen.GetBytes(cmd);
Console.WriteLine(“传输…”);
stm.Write(ba,0,ba.Length);
/*如果(cmd==“$rmdbgvoicestats!”)
{
b计时器已用时间+=新的ElapsedEventHandler(OnTimedEvent1);
//b时间间隔=100;
bTimer.Enabled=true;
}*/
同时(tcpclnt.已连接)
{
字节[]bb=新字节[tcpclnt.ReceiveBufferSize];
int k=stm.Read(bb,0,tcpclnt.ReceiveBufferSize);
StringBuilder sb=新的StringBuilder();
for(int i=0;i
有人能告诉我如何在不干扰程序其余部分的情况下使用while循环吗?我想在发送其他命令时监听数据,以防没有数据发送给我我建议使用异步:)我对异步不太熟悉…你能举个例子吗?有一件事我不懂。ManualResetEvent命名为connectDone。??向服务器发送多个命令可能会导致问题。客户机是主机,服务器是从机。应将命令从客户端发送到服务器,然后等待响应。服务器代码应始终响应每条消息。如果在不等待响应的情况下开始向服务器发送多个命令,则可能不知道返回的是哪个响应,除非服务器随响应一起返回id。将其创建为类的字段,如下所示:
private ManualResetEvent connectDone=new ManualResetEvent(false)代码>