Я написал код, приведенный ниже, для сбора данных с Panasonic PBX (KX-TDE 100/200) и записи его в файл. Когда я пытаюсь запустить приведенный ниже код, он показывает «не отвечает» в диспетчере задач.
Также я попытался отладить там, где может быть проблема. Строкаданные захвата с Panasonic PBX с использованием C#
Розетка socket = прослушиватель.Accept(); будет удаляться при отладке, после чего отобразится сообщение «Не реагировать».
УАТС подключается к локальной сети в моей компании. Какие-либо конфигурации необходимо выполнять в локальной сети?
Я попробовал тот же код для IP: 127.0.0.1, чтобы отправить строку в клиентское приложение, и это сработало. Но когда я попытался извлечь данные из УАТС, он не работает.
Провод LAN из моей АТС подключен к коммутатору.
Пожалуйста, дайте мне знать, какую ошибку я делаю. Также укажите мне хорошие образцы при захвате данных с УАТС с помощью C#.
private void btnstartserver_Click(object sender, EventArgs e)
{
int portno = Convert.ToInt32(txtportnum.Text);
byte[] receivedBytes = new byte[1024];
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddress = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, portno);//2112
txtboxstatus.Text = "Creating socket object...";
Socket listener = new Socket(AddressFamily.InterNetworkV6,
SocketType.Stream,
ProtocolType.Tcp);
listener.Bind(ipEndPoint);
listener.Listen(10);
txtboxstatus.AppendText("Listening on " + ipHost.AddressList[0].ToString() + ":" + portno.ToString() + "\r\n");
Socket socket = listener.Accept();
txtboxstatus.AppendText ("\n Connected with ..." + ipEndPoint.Port);
string receivedvalue = string.Empty;
receivedvalue = ReadMessage(socket);
txtboxstatus.AppendText("\n Message read.....trying to write to the file...");
//writing the received value from client into a file.
try
{
FileStream fs = new FileStream("E:/Demo/IpData/Call.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
sw.Write(receivedvalue);
sw.Dispose();
fs.Dispose();
}
catch (Exception ex)
{
txtclient.AppendText(ex.Message);
}
}
Уточнение к этому вопросу.
Я написал новый код для подключения к 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);
}
Но я не могу получить никаких данных от АТС, кроме «-» плюс все, что я посылаю в примере «sendingMessage» variable.For если sendingMessage = «ABCDE», я буду получать -abcde
Также в документации описывается, как настроить поле PBX. Также, чтобы УАТС возвращала данные, нам необходимо отправить действительные учетные данные. Как отправить эти действительные учетные данные?
Вы уверены, что вам не нужны действительные учетные данные для подключения к УАТС, многие из этих машин требуют учетных данных для взаимодействия с ним. –
@JuanPabloGomez: - да, это необходимо, я просто узнал об этом. Итак, как я могу предоставить действительные учетные данные для подключения к УАТС. Любой образец или ссылка ???? – DotNetTide
Извините за задержку, это зависит от каждой модели, вы должны прочитать инструкцию по УАТС. возможно, в разделе командной строки. Может быть, эта ссылка может помочь вам http://www.voicesonic.com/panasonic/manuals/KX-TDE_100_200_600/KXTDE_Programming_Manual-100-200-600.pdf –