高手请看,为什么会报WSAENOTCONN错,急急急(100分)

  • 主题发起人 libi7791
  • 开始时间
L

libi7791

Unregistered / Unconfirmed
GUEST, unregistred user!
我用winsock的api函数写了一个c/s的通信程序,其中服务器端的的程度是这样的:
procedure TForm1.Button1Click(Sender: TObject);
var
MySock:Tsocket;
sa:tSockAddrIn;
sock ,len:integer;
getbuf:array[0..3] of char;
wVersionRequested:WORD;
wsaData:TWSADATA;
err:integer;
begin
wVersionRequested:=MAKEWORD(2,0);
err:=WSAStartup(wVersionRequested,wsaData);

if Fhand_dll = 0 then
begin
showmessage('载入动态链接库出错');
end;

@Frecv:= GetProcAddress(Fhand_dll, 'recv');
if err=-1 then
Label1.Caption:='初始化失败!' ;
MySock:=socket(af_inet,SOCK_STREAM,0);
sa.sin_family:=af_inet;
sa.sin_port:=htons(2506);
sa.sin_addr.S_addr:=htonl(INADDR_ANY);
//inet_addr(pchar('192.168.0.2'));
bind(MySock,sa,sizeof(sa));
listen(MySock,2);
len:=sizeof(sa);
accept(MySock,@sa,@len);
err:=WSAGetLastError();
Recv(MySock,getbuf,sizeof(getbuf),0);
err:=WSAGetLastError();
end;
客户端程序是这样的:
procedure TForm1.Button2Click(Sender: TObject);
var
MySock:Tsocket;
sa:tSockAddrIn;
sock,len,msgsock:integer;
buf:string;
wVersionRequested:WORD;
wsaData:TWSADATA;
server:TSockAddrIn;
i,err:integer;

begin
wVersionRequested:=MAKEWORD(2,0);
err:=WSAStartup(wVersionRequested,wsaData);
if err=-1 then
Label1.Caption:='初始化失败!' ;
MySock:=socket(af_inet,SOCK_STREAM ,0);
sa.sin_family:=af_inet;
sa.sin_port:=htons(2506);
sa.sin_addr.S_addr:=inet_addr(pchar('192.168.0.2'));
connect(MySock,sa,sizeof(sa));
buf:='hello';
send(Mysock,buf,sizeof(buf),0 );
showmessage(inttostr(WSAGetLastError()));
closesocket(MySock);
WSACleanup();
end;

当我点击客户端的的按钮向服务器端发一个字符串时,客户端没有显示任何错误,但是服务器端
却不能接受数据,且显示的错误信息为10057(WSAENOTCONN),也就是不能连接到一个Socket上,不知这是为什么
哪位高手能告诉我,急急急
 
局域网装了代理?,禁用后就可以了
 
是的,我以前装过sygate,但是我已经删除了,原野飞侠,你能不能告诉我,为什么装了代理过后就不能
谢谢
 
顶部