Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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# 使用c从Panasonic PBX捕获数据#_C#_Sockets_Pbx - Fatal编程技术网

C# 使用c从Panasonic PBX捕获数据#

C# 使用c从Panasonic PBX捕获数据#,c#,sockets,pbx,C#,Sockets,Pbx,我已经编写了以下代码来从Panasonic PBX(KX-TDE 100/200)捕获数据并将其写入文件。 当我尝试运行下面的代码时,它在任务管理器中显示“未响应”。 我还试着调试可能出现问题的地方 Socket-Socket=listener.Accept()将在调试时被点击,然后显示“无响应” PBX连接到我公司的局域网。需要在我的局域网上进行任何配置吗 我尝试了IP:127.0.0.1的相同代码,将字符串发送到客户端应用程序,它成功了。但当我尝试从PBX中提取数据时,它不起作用 我的PBX

我已经编写了以下代码来从Panasonic PBX(KX-TDE 100/200)捕获数据并将其写入文件。 当我尝试运行下面的代码时,它在任务管理器中显示“未响应”。
我还试着调试可能出现问题的地方

Socket-Socket=listener.Accept()将在调试时被点击,然后显示“无响应”

PBX连接到我公司的局域网。需要在我的局域网上进行任何配置吗

我尝试了IP:127.0.0.1的相同代码,将字符串发送到客户端应用程序,它成功了。但当我尝试从PBX中提取数据时,它不起作用

我的PBX的LAN线连接到交换机

请让我知道我犯了什么错误。还向我介绍了使用C#从PBX捕获数据的好示例

更新此问题。
我已经写了一个连接到PBX的新代码。有了这个新代码,我可以连接到PBX。请在下面查找

private void btnTx_Click(object sender, EventArgs e)
    {
        byte[] receivedBytes = new byte[1024];

        int portno = Convert.ToInt32(txtportnum.Text);
        IPHostEntry ipHost = Dns.GetHostByName("192.168.x.yyy");
        IPAddress ipAddress = ipHost.AddressList[0];
        IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, portno);
           txtstatus.Text = "Creating socket object...";

        Socket send_soc = new Socket(AddressFamily.InterNetwork,
                                    SocketType.Stream,
                                    ProtocolType.Tcp);

        send_soc.Connect(ipEndPoint); 
        txtstatus.AppendText("\nSuccessfully connected to:" + "\t" + send_soc.RemoteEndPoint);
        txtstatus.AppendText("\nConnecting via :" + "\t" + send_soc.LocalEndPoint);

        string sendingMessage = "abcde";





        SendMessage(send_soc, sendingMessage);

        int totalBytesReceived = send_soc.Receive(receivedBytes);

        string dff = "";
        string s = System.Text.ASCIIEncoding.ASCII.GetString(receivedBytes, 0, totalBytesReceived);

        txtRx.AppendText(s);
        send_soc.Shutdown(SocketShutdown.Both);
        send_soc.Close();
        try
        {
            FileStream dr = new FileStream("E:/Demo/IpData/Call.txt", FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite);
            StreamReader fg = new StreamReader(dr);
            string df = fg.ReadToEnd();
            dff = df;
            fg.Dispose();
            dr.Dispose();
        }
        catch (Exception dfjdfs)
        {
            throw dfjdfs;
        }
        try
        {
            File.Delete("E:/Demo/IpData/Call.txt");
        }
        catch (Exception jhu)
        {
            throw jhu;
        }
        try
        {
            FileStream cd = new FileStream("E:/Demo/IpData/Call.txt", FileMode.Create);
            StreamWriter cdf = new StreamWriter(cd);
            cdf.Write(dff);
            cdf.Write(s);
            cdf.Dispose();
            cd.Dispose();
        }
        catch (Exception hgy)
        {
            throw hgy;
        }

    }

    static void SendMessage(Socket socket, string msg)
    {
        byte[] data = System.Text.ASCIIEncoding.ASCII.GetBytes(msg);

        socket.Send(data);
    }
但我无法从PBX接收任何数据,除了“-”加上我在“sendingMessage”变量中发送的任何数据。例如,如果sendingMessage=“abcde”,我将接收-abcde


此外,文档还描述了如何配置PBX盒。此外,为了让PBX返回数据,我们需要发送有效的凭据。如何发送此有效凭据?

不要在GUI事件处理程序中进行阻止调用(如accept)


断开服务器线程或使用异步。

不要在GUI事件处理程序中进行阻塞调用(如accept)


断开服务器线程或使用异步。

您应键入“SMDR”并在“-”之后输入以进入SMDR模式,然后键入“PCCSMDR”作为密码并输入以进入松下公共型号。

您应键入“SMDR”并在“-”之后输入以进入SMDR模式,然后键入“PCCSMDR”作为公用松下型号的密码并输入。

谢谢您的回复。我尝试使用async,但调试时仍显示“无响应”。谢谢您的回复。我尝试使用async,但调试时仍显示“无响应”。您确定不需要有效凭据来连接到PBX吗,许多这样的机器需要凭证才能与之交互。@JuanPabloGomez:-是的,这是必需的,我只是来了解它的。那么,我应该如何提供与PBX连接的有效凭据呢。任何样品或链接???很抱歉延迟,这取决于每个型号,您必须阅读PBX手册。可能在命令行部分。也许这个链接可以帮助你@JuanPabloGomez:-我可以在不提供任何凭据的情况下连接到PBX,但我没有收到任何数据。我只得到字节数组中分别存在的“\r-”作为13 45。此外,本手册没有提及任何有关传递凭据的内容,只是介绍了PBX管理控制台。那么,您能给我举一个您知道的为PBX型号提供凭证的例子吗?如果我提供凭据,我可能会得到数据。是吗,你确定你不需要有效的凭据才能连接到PBX,这些机器中的许多都需要凭据才能与PBX进行交互。@JuanPabloGomez:-是的,这是必需的,我只是知道的。那么,我应该如何提供与PBX连接的有效凭据呢。任何样品或链接???很抱歉延迟,这取决于每个型号,您必须阅读PBX手册。可能在命令行部分。也许这个链接可以帮助你@JuanPabloGomez:-我可以在不提供任何凭据的情况下连接到PBX,但我没有收到任何数据。我只得到字节数组中分别存在的“\r-”作为13 45。此外,本手册没有提及任何有关传递凭据的内容,只是介绍了PBX管理控制台。那么,您能给我举一个您知道的为PBX型号提供凭证的例子吗?如果我提供凭据,我可能会获得数据。
private void btnTx_Click(object sender, EventArgs e)
    {
        byte[] receivedBytes = new byte[1024];

        int portno = Convert.ToInt32(txtportnum.Text);
        IPHostEntry ipHost = Dns.GetHostByName("192.168.x.yyy");
        IPAddress ipAddress = ipHost.AddressList[0];
        IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, portno);
           txtstatus.Text = "Creating socket object...";

        Socket send_soc = new Socket(AddressFamily.InterNetwork,
                                    SocketType.Stream,
                                    ProtocolType.Tcp);

        send_soc.Connect(ipEndPoint); 
        txtstatus.AppendText("\nSuccessfully connected to:" + "\t" + send_soc.RemoteEndPoint);
        txtstatus.AppendText("\nConnecting via :" + "\t" + send_soc.LocalEndPoint);

        string sendingMessage = "abcde";





        SendMessage(send_soc, sendingMessage);

        int totalBytesReceived = send_soc.Receive(receivedBytes);

        string dff = "";
        string s = System.Text.ASCIIEncoding.ASCII.GetString(receivedBytes, 0, totalBytesReceived);

        txtRx.AppendText(s);
        send_soc.Shutdown(SocketShutdown.Both);
        send_soc.Close();
        try
        {
            FileStream dr = new FileStream("E:/Demo/IpData/Call.txt", FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite);
            StreamReader fg = new StreamReader(dr);
            string df = fg.ReadToEnd();
            dff = df;
            fg.Dispose();
            dr.Dispose();
        }
        catch (Exception dfjdfs)
        {
            throw dfjdfs;
        }
        try
        {
            File.Delete("E:/Demo/IpData/Call.txt");
        }
        catch (Exception jhu)
        {
            throw jhu;
        }
        try
        {
            FileStream cd = new FileStream("E:/Demo/IpData/Call.txt", FileMode.Create);
            StreamWriter cdf = new StreamWriter(cd);
            cdf.Write(dff);
            cdf.Write(s);
            cdf.Dispose();
            cd.Dispose();
        }
        catch (Exception hgy)
        {
            throw hgy;
        }

    }

    static void SendMessage(Socket socket, string msg)
    {
        byte[] data = System.Text.ASCIIEncoding.ASCII.GetBytes(msg);

        socket.Send(data);
    }