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

  • 主题发起人 主题发起人 什么年代
  • 开始时间 开始时间

什么年代

Unregistered / Unconfirmed
GUEST, unregistred user!
下面代码运行后,执行了showmessage('连接服务器失败');
为什么,怎么改写,谢谢!
var
socket1:TSOCKET;
addr:TSockAddr;

WSAStartup(MAKEWORD(2,0),WSAData;
socket1:=socket(AF_INET,SOCK_STREAM,0);
ZeroMemory(@addr,sizeof(addr));
addr.sin_family :=AF_INET;
addr.sin_addr.s_addr :=inet_addr(Pchar('127.0.0.1'));

addr.sin_port:=htons(79);
Re := connect(socket1,addr,sizeof(addr));
if(Re<>0)then
begin
showmessage('连接服务器失败');

end;
 
下面是我写的一个客户端,在D3 + Win2000下测试通过。不知道你的服务器端是怎么写的。
var
sockfd: integer;
buf: array[0..1023] of char;

procedure TForm1.btnStartClick(Sender: TObject);
const
HostName = '192.168.1.6';
MaxDataSize = 1024; //每次最大数据传输量
SERVPORT = 2024; //服务器端口
var
wVersionRequired: word;
WSData: TWSAData;
host: PHostEnt;
sAddr: ^integer;
RecvBytes: integer;
SvrAddr: TSockAddr;
begin
wVersionRequired := MakeWord(2, 0);
if WSAStartup(wVersionRequired, WSData) <> 0 then
begin
memo.lines.add('socket加载失败!');
exit;
end;
sockfd := socket(AF_INET, SOCK_STREAM, 0);
if sockfd = -1 then
begin
memo.lines.add('Socket创建失败!');
exit;
end;

SvrAddr.sin_family := AF_INET;
SvrAddr.sin_port := htons(SERVPORT);
SvrAddr.sin_addr.S_addr := Inet_Addr(PChar(HostName));
FillChar(SvrAddr.sin_zero, SizeOf(SvrAddr.sin_zero), 0);

if connect(sockfd, SvrAddr, SizeOf(SvrAddr)) = -1 then
begin
memo.lines.add('connect失败!');
if CloseSocket(sockfd) <> 0 then
memo.lines.add('CloseSocket失败!');
WSAcleanup;
exit;
end;
buf := 'Hello!Server!';
if Send(sockfd, buf, SizeOf(buf), 0) = -1 then
begin
memo.lines.add('send失败!');
exit;
end;
RecvBytes := recv(sockfd, buf, MaxDataSize, 0);
if RecvBytes = -1 then
begin
memo.lines.add('recv失败!');
exit;
end;
memo.Lines.Add(' --- Client Recv ---' + #13#10 + buf);
end;
 
ego,谢谢你的答复,还是不行。
段口为79为finger,本地不需要Server或client。
哪位大侠再指点一下。
 
段口为79为finger,本地不需要Server或client。??

那你改到有 server 的地方再试一下。
可以用indy吗,干吗自己写??
 
tt8大哥。
我的问题也是在一本书上抄的,可是老是showmessage('连接服务器失败');
我也不知道原因在哪?书上就这么多代码!
请指点!!
 
把'127.0.0.1'指向到一个有提供finger服务的地址。

看看我的一个 tcp/ip例子吧,没有直接用winsock,用indy


TT8 利用 Delphi7 Indy 开发的 文件上传例子,希望对大家有帮助 :)

ftp://fox:fox@61.133.63.168/tt8/transfile/transfile.rar

 
多人接受答案了。
 
后退
顶部