TcpClientとTcpServerコンポーネントの使い方

解決


ごく  2005-06-05 02:16:09  No: 15377

2台のPC間で、ソケット通信を使ったチャットの様な物を作成しようとしています。
Edit1に入力した文字列をButton1クリック時に送信し、もう一台のPCで受信してMemo1に受信内容を表示するといった物を作成したいのです。
TcpClientとTcpServerを使うのかなと思い、色々と書いてみたのですが接続はできているのですが、送受信の流れがわからず困っています。以下がここまでに書いたソースです。どなたかご存じの方いらっしゃいましたらご享受ください。

procedure TForm1.FormCreate(Sender: TObject);
begin
  TcpServer1.LocalHost := '192.168.1.3';
  TcpServer1.LocalPort := '80';
  TcpServer1.Active := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TcpClient1.RemoteHost := '192.168.1.3';
  TcpClient1.RemotePort := '80';
  TcpClient1.Active := true;
  if TcpClient1.Connect then
  begin
    StatusBar1.Panels[0].Text := '接続成功';
    TcpClient1.Sendln(Edit1.Text);
  end
  else StatusBar1.Panels[0].Text := '接続失敗';
end;

procedure TForm1.TcpServer1Accept(Sender: TObject;
  ClientSocket: TCustomIpClient);
begin
  Memo1.Text:=ClientSocket.ReceiveLn;
end;


ごく  2005-06-05 02:27:12  No: 15378

以下のソースで自分自身に対して送信した場合は正しく動作しました。
この同じexeファイルをもう一台のPCにも起動していますが、データ来ていないようです。テスト方法が悪いのでしょうか・・・。ネットワークプログラムの経験があまり無いので、困っています。

procedure TForm1.FormCreate(Sender: TObject);
begin
  TcpServer1.LocalHost := '192.168.1.2';
  TcpServer1.LocalPort := '8080';
  TcpServer1.Active := true;
end;

//送信
procedure TForm1.Button1Click(Sender: TObject);
begin
  TcpClient1.RemoteHost := '192.168.1.2';
  TcpClient1.RemotePort := '8080';
  TcpClient1.Active := true;
  if TcpClient1.Connect then
  begin
    StatusBar1.Panels[0].Text := '接続成功';
    TcpClient1.Sendln(Edit1.Text);
  end
  else StatusBar1.Panels[0].Text := '接続失敗';
  TcpClient1.Active := false;
end;

//受信時
procedure TForm1.TcpServer1Accept(Sender: TObject;
  ClientSocket: TCustomIpClient);
begin
  Memo1.Text:=ClientSocket.ReceiveLn;
end;


ごく  2005-06-05 09:35:51  No: 15379

自己解決しました。
ホストの指定が自分自身になっていたためでした。
凡ミスですね。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加