⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 一个FINGER的应用
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows,winsock, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TfrmMain = class(TForm)
    btnFinger: TButton;
    memo1: TMemo;
    Label1: TLabel;
    edtHostName: TEdit;
    Label2: TLabel;
    edtUserName: TEdit;
    procedure btnFingerClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.DFM}

procedure TfrmMain.btnFingerClick(Sender: TObject);
var
    Info:string;
    SendBuf,RecvBuf:pchar;
    socket1:TSOCKET;
    addr:TSockAddr;
    Re:Integer;
begin
    //建立socket
    socket1:=socket(AF_INET,SOCK_STREAM,0);
    if(socket1=INVALID_SOCKET)then
    begin
        Memo1.Lines.Add('错误:建立socket失败');
        exit;
    end;
    //连接主机
    ZeroMemory(@addr,sizeof(addr));
    addr.sin_family :=AF_INET;
    addr.sin_addr.s_addr :=inet_addr(Pchar(edtHostName.Text));
    //Finger use #79 port
    addr.sin_port:=htons(79);
    Re := connect(socket1,addr,sizeof(addr));
    if(Re<>0)then
    begin
         Memo1.Lines.Add('连接服务器失败');
         exit;
    end;
    //发送信息
    GetMem(SendBuf,1024);
    ZeroMemory(SendBuf,1024);
    Info:=edtUserName.Text+#10;
    StrPCopy(SendBuf,Info);
    Re:=send(socket1,SendBuf^,Length(SendBuf),0);
    if(Re=SOCKET_ERROR)then
    begin
         Memo1.Lines.Add('发送数据失败');
         exit;
    end;
    //读取主机返回信息
    GetMem(Recvbuf,1024);
    repeat
      ZeroMemory(Recvbuf,1024);
      re := recv(socket1, Recvbuf^, 1024, 0);
      Info:=StrPas(Recvbuf);
      Memo1.Lines.Add(Info);
    Until  re=0;
    Memo1.Lines.Add('结束');
    FreeMem(SendBuf);
    FreeMem(Recvbuf);
    //关闭socket
    closesocket(socket1);
end;
procedure TfrmMain.FormCreate(Sender: TObject);
var
    WSAData:TWSAData;
begin
    edtHostName.Text:='166.111.136.2';
    edtUserName.Text:='Anonymous';
    //初始化Winsock
    if (WSAStartup(MAKEWORD(2,0),WSAData)<>0) then
    begin
        //初始化失败
        memo1.Lines.Add('Winsock初始化失败');
        exit;
    end
    else
        Memo1.Lines.Add('Socket开始运行');
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
  //释放Winsock
  WSACleanUP();
end;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -