Я написал программу в Delphi с запросом на TCP. Поскольку я начинаю работать с C#, я пытаюсь его перевести. Следуйте коду на Паскале, но, например, я не знаю, как заставить его работать на С#:
var
s:shortstring;
CR,LF:char;
l:integer;
buffer:TIdBytes;
resp: TStringStream;
ouvert:integer;
begin
TCP:=TIdTCPClient.Create;
CR:=chr(13);
LF:=chr(10);
TCP.Host:='192.168.52.203';
TCP.Port:=80;
TCP.Connect;
if TCP.Connected then
begin
s:='GET /state.xml?noReply=0 HTTP/1.1'+CR+LF+'Authorization: Basic bm9uZTp3ZWJyZWxheQ=='+CR+LF+CR+LF;
l:=Length(s);
SetLength(buffer,l);
Move(s[1],Buffer[0],l);
TCP.IOHandler.Write(Buffer,l);
resp := TStringStream.Create;
TCP.IOHandler.ReadStream(resp,185);
resp.Position:=0;
// memoGet.Lines.LoadFromStream(resp);
resp.Position:=0;
s:=Resp.ReadString(185);
Спасибо за вашу помощь. Мишель
Вам предлагается сделать попытку написать свой код. Если во время этой попытки вы столкнетесь с определенной технической проблемой, такой как ошибка или неожиданный результат, мы можем помочь с этим. Предоставьте конкретную информацию об этой попытке и о том, что не сработало должным образом. Чтобы узнать больше об этом сообществе и о том, как мы можем вам помочь, начните с тура и прочитайте Как спрашивать и связанные с ним ресурсы.
Не «переводи» код. Выясните, что вы хотите сделать, а затем сделайте это на другом языке в экосистеме этого языка — каким бы этот другой язык ни был.





Вы можете перевести его на C# через использование TcpClient и NetworkStream из пространства имен System.net.sockets.
Это может выглядеть так:
using System;
using System.IO;
using System.Net.Sockets;
using System.Text;
class Program
{
static void Main()
{
var tcp = new TcpClient();
var cr = "\r";
var lf = "\n";
var host = "192.168.52.203";
var port = 80;
tcp.Connect(host, port);
if (tcp.Connected)
{
var request = "GET /state.xml?noReply=0 HTTP/1.1" + cr + lf + "Authorization: Basic bm9uZTp3ZWJyZWxheQ= = " + cr + lf + cr + lf;
byte[] buffer = Encoding.ASCII.GetBytes(request);
var stream = tcp.GetStream();
stream.Write(buffer, 0, buffer.Length);
var reader = new StreamReader(stream);
var response = reader.ReadToEnd();
Console.WriteLine(response);
}
}
}
И в чем конкретно будет преимущество перед использованием HttpClient?
Никогда не говорилось, что это должен быть «HTTPS». Это всего лишь краткий пример, чтобы он/она могли иметь отправную точку.
Большое спасибо, все работает. Теперь у меня есть небольшая программа, написанная на C#, которая может сказать мне, открыта ли крыша моей автоматической астрономической обсерватории. Мишель
Рад, что это работает, не могли бы вы отметить мой ответ, чтобы люди знали, что это работает, спасибо!
Есть ли какая-то причина, по которой вы хотели бы сделать это, а не использовать проверенный HTTP-клиент?