Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#tcp无线电应用_C#_Tcp_Tcpclient - Fatal编程技术网

c#tcp无线电应用

c#tcp无线电应用,c#,tcp,tcpclient,C#,Tcp,Tcpclient,我有一个tcp应用程序 我需要做的是设置几个实例(完成)并向每个服务器发送命令。我希望当给定一个特定命令时,服务器将侦听网络上的任何操作并报告数据,并且仍然能够向该服务器或其他服务器发送其他命令。 我的代码: 无线电实例: instances = new radio1[list.Count]; for (int j = 0; j < list.Count; j++) {

我有一个tcp应用程序 我需要做的是设置几个实例(完成)并向每个服务器发送命令。我希望当给定一个特定命令时,服务器将侦听网络上的任何操作并报告数据,并且仍然能够向该服务器或其他服务器发送其他命令。 我的代码: 无线电实例:

  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)