Я пытаюсь реализовать Fitnesse Slim server для delphi, но у вас есть некоторые проблемы с сообщением.Delphi: TTcpServer, сброс соединения при чтении
Fitnesse запустит мой процесс и предоставит мне номер порта в качестве аргумента командной строки.
Тогда я должен создать сокет в указанном номере порта, и Fitnesse подключится к этому порту.
Я использую TTcpServer для работы:
TcpServer1.LocalPort := ParamStr(ParamCount);
TcpServer1.Active := true;
В OnAccepted() -Event, я посылаю версию протокола для использования, как указано в спецификации.
procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
s: ansistring;
begin
ClientSocket.Sendln('Slim -- V0.0', #10);
setLength(s, 6);
ClientSocket.ReceiveBuf(s, 6);
end;
Когда я называю ReceiveBuf(), процесс заканчивается, и FitNesse бросает исключение:
java.net.SocketException: Connection reset
Я использовал oSpy, чтобы увидеть, что присылают и получил. Это показывает, что после того, как мой код отправит версию протокола, фитнес отправит сообщение назад и что соединение будет сброшено, когда я попытаюсь получить это сообщение.
Кто-нибудь знает, в чем причина этого? Я делаю что-то совершенно не так?
Btw, все работает нормально, когда я использую java slim server, который поставляется с адаптером. Затем oSpy показывает одно и то же сообщение, вплоть до первого чтения. Хотя моя попытка прочитать не удается, эта работа работает так, как ожидалось.
Привет Vegar, я написал FitNesse тонкий сервер еще. Но я использую Indy-Components. Он работает со всеми тестовыми примерами в Physe-Wiki, но я не поддерживаю Runtime Packages. Для меня это был тест новых Rtti-функций Delphi 2010. Поэтому он компилируется только с Delphi 2010. Мне очень нравится делиться своим кодом, чтобы получить обратную связь. Поэтому, если вам нравится, или кто-то еще оставит здесь записку. –
Было бы здорово! – Vegar
@Vegar, я не могу найти способ отправить личное сообщение другому пользователю stackoverflow.com, так что я могу отправить электронную почту на вашу домашнюю страницу? Завтра отправлю источник. –