Our office currently uses telnet to query an external server. The procedure is something like this.
So I’m trying to make this queries automatic using a c# app. My code is the following
First the connection. (No exceptions)
SocketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
String szIPSelected = txtIPAddress.Text;
String szPort = txtPort.Text;
int alPort = System.Convert.ToInt16(szPort, 10);
System.Net.IPAddress remoteIPAddress = System.Net.IPAddress.Parse(szIPSelected);
System.Net.IPEndPoint remoteEndPoint = new System.Net.IPEndPoint(remoteIPAddress, alPort);
SocketClient.Connect(remoteEndPoint);
Then I send the query (No exceptions)
string data ="some query";
byte[] byData = System.Text.Encoding.ASCII.GetBytes(data);
SocketClient.Send(byData);
Then I try to receive the response
byte[] buffer = new byte[10];
Receive(SocketClient, buffer, 0, buffer.Length, 10000);
string str = Encoding.ASCII.GetString(buffer, 0, buffer.Length);
txtDataRx.Text = str;
public static void Receive(Socket socket, byte[] buffer, int offset, int size, int timeout)
{
int startTickCount = Environment.TickCount;
int received = 0; // how many bytes is already received
do
{
if (Environment.TickCount > startTickCount + timeout)
throw new Exception("Timeout.");
try
{
received += socket.Receive(buffer, offset + received, size - received, SocketFlags.None);
}
catch (SocketException ex)
{
if (ex.SocketErrorCode == SocketError.WouldBlock ||
ex.SocketErrorCode == SocketError.IOPending ||
ex.SocketErrorCode == SocketError.NoBufferSpaceAvailable)
{
// socket buffer is probably empty, wait and try again
Thread.Sleep(30);
}
else
throw ex; // any serious error occurr
}
} while (received < size);
}
Every time I try to receive the response I get "an exsiting connetion has forcibly closed by the remote host" if open telnet and send the same query I get a response right away
Any ideas, or suggestions?
Based on the comment exchange between you and I, it would seem that you need to append Ascii code 19 (0x13) to the end of your query.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With