问一个SOCKET的简单问题(50分)

  • 主题发起人 主题发起人 echo_echo
  • 开始时间 开始时间
E

echo_echo

Unregistered / Unconfirmed
GUEST, unregistred user!
问一个SOCKET的简单问题

有一台UNIX主机,现在想通过DELPHI编写前台程序,
启主机上的某个程序,由于刚刚学习SOCKET编程,
一知半解,想用下面的代码段来实现,可以都不可以成功,高手指点一二

procedure TForm1.B_sendClick(Sender: TObject);
var
f:TIniFile;
syspz_host:string;
begin
//读取INI文件的主机地址和端口配置文件路径
syspz_host:='./syspz_host.ini';

f:=TIniFile.Create(syspz_host);

addr:=f.ReadString('hostInfo','addr','');
xxport:=StrToInt(f.ReadString('hostInfo','port',''));
f.free;
with clientsocket1 do
begin
Active:=false;
Address:=addr;
Port:=xxport;
Active:=true;
end;//with

end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
statusbar1.Panels[0].Text:='已经连接成功';
with ClientSocket1 do
begin
Socket.SendText('test'); //主机登录名
Socket.SendText('test'); //密码
Socket.SendText('cd test'); //进入一个目录
Socket.SendText('sendsms'); //启程序程序
Active:=false;
end;
end;

 
我想和UNIX主机的Socket协议有关,只能是一一对应,不能随便发送用户名等
用户名和密码可在Socket的属性中设置
 
to hguhgu,
没有看可以设置用户名和密码的地方
 
你用微软提供的ActiveX TWinsock 试试
记得用VC(MFC)与DELPHI各自的SOCKET控件通信时DELPHI被迫启动了两个SOCKET,
守侯两个端口,一个收,一个发。
你最好先连接一下UNIX主机的端口,确定是否打开。

var
serv_addr:TSockAddrIn;
istate:integer;
host:Thostent;
begin
Fsocket:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
serv_addr.sin_family:=AF_INET;
serv_addr.sin_port:=htons(strtoint(fport));
serv_addr.sin_addr.S_addr:=inet_addr(pchar(faddress));
serv_addr.sin_zero:='';
istate:=FConnect(fsocket,serv_addr,sizeof(serv_addr));
CloseSocket(fsocket);
判断 istate 值可知是否连接成功。
 
连的telnet?
1)你应该等待Server返回Login, Password这样的字符串后在发送
2)你没有发送回车和换行符
 
关注

to delphi:
我也在写类似的程序。因为时常要登录UNIX主机监控一些进程是否在,如果不在的话
要运行起来。所以也想写一个DELPHI的前台程序。DELPHI可有例子?

 
我想在unix那一端应该有个socket进程来处理你的连接问题,和登陆请求。
 
后退
顶部