Я пытаюсь написать консольное приложение C # для взаимодействия с ПК-сервером Miler telnet . Мне удалось заставить это работать в powershell, но мой код C # не работает.
static void Main(string[] args)
{
byte[] ReadBuffer = new byte[1024];
string[] stringSeparators = new string[]{"READY"};
try
{
TcpClient Socket = new TcpClient("myServer", 8320);
if (Socket.Connected) {
NetworkStream netStream = Socket.GetStream();
string PCMSResponse = "";
// Check for the READY prompt
if (netStream.CanRead) {
int byteRead = 0;
while (netStream.DataAvailable) {
byteRead = netStream.Read(ReadBuffer, 0, ReadBuffer.Length);
PCMSResponse += Encoding.ASCII.GetString(ReadBuffer, 0 , byteRead).Trim();
}
} else {
Console.WriteLine("Cannot read from myServer");
}
Thread.Sleep(1000);
// Get New Trip
if (netStream.CanWrite) {
Byte[] PCMSCommandBuffer = Encoding.ASCII.GetBytes("PCMSNewTrip");
netStream.Write(PCMSCommandBuffer, 0 , PCMSCommandBuffer.Length);
Thread.Sleep(1000);
} else {
Console.WriteLine("Cannot write to myServer.");
}
if (netStream.CanRead) {
int byteRead = 0;
while (netStream.DataAvailable) {
byteRead = netStream.Read(ReadBuffer, 0, ReadBuffer.Length);
PCMSResponse += Encoding.ASCII.GetString(ReadBuffer, 0, byteRead).Trim();
}
} else {
Console.WriteLine("Cannot read from myServer");
}
string[] ResponseArray = PCMSResponse.Split(stringSeparators, StringSplitOptions.None);
int c = ResponseArray.Length - 2;
string TripID = ResponseArray[c].Replace(System.Environment.NewLine, "").Replace("\0", "");
Console.WriteLine(PCMSResponse);
}
}
catch (SocketException)
{
Console.WriteLine("Unable to connect to server")
}
}
Ожидаемый результат
ALK PCMILER SERVER READY
pcmsnewtrip
53
READY
Фактическая выработка
ALK PCMILER SERVER READY
Кажется, что я на самом деле не пишу на сервер, потому что, если бы я написал неверную команду на сервер, я бы увидел ошибку, подобную этой:
ALK PCMILER SERVER READY
pmctripnew
NO SUCH FUNCTION
READY
Я знаю, что могу написать в сокет, потому что не получаю сообщение об ошибке Cannot write to myServer.
Не уверен, что я делаю не так. (
Дайте мне знать, если вы хотите увидеть код powershell.
РЕДАКТИРОВАТЬ - Если вы собираетесь редактировать этот пост, по крайней мере, оставьте ожидаемый результат КАК ОЖИДАЕТСЯ ! Изменение ожидаемого выхода меняет цель поста. (Например, если я хочу яблоки, но вы редактируете мой пост, чтобы попросить апельсины, я не получу правильный ответ.)