Socketconnection封装为DLL的问题 |
答題得分者是:sdlyzhlmxh
|
zyyjcking
一般會員 發表:1 回覆:2 積分:0 註冊:2007-04-19 發送簡訊給我 |
现在公司要做一个项目,已经定下来用Socketconnection
当把SocketConnection封装到Dll中遇到一个问题 问题如下: 当客户端正在正常运行时(调用Dll中的Socketconnection),把Scktsrvr服务器强制关闭,此时客户端报“远程强迫关闭了主机”错误,然后客户端退出的时候没有响应 代码调试发现问题如下(部分代码): DLL部分: //初始化Socketconnection(诵姓? function IniSckt(PApplication: THandle;ServerNameOrIP: WideString; ServerPort: integer): Boolean; begin try Application.Handle := PApplication; FServerNameOrIP := ServerNameOrIP; FServerPort := ServerPort; if not Assigned(Sckt) then Sckt := TSocketConnection.Create(Application); Sckt.Host := FServerNameOrIP; Sckt.Port := FServerPort; sckt.ServerGUID := '{D6B81A8D-6B7C-47EE-9EF4-2CAB04BDB5DA}'; sckt.open; Result:=True; except Result:=False; end; end; function FreeSckt: Boolean; stdcall; begin Result := False; try if assigned(sckt) then //显示Sckt.connected为True(这里应该为False才对,哪位大富翁能解答) begin sckt.connected:=False; //调试到这里就运行不了了(为什么会停在这呢?) FreeAndNil(Sckt); end; Result := True; except end; end; EXE部分: procedure TForm3.FormShow(Sender: TObject); begin if not IniSckt(Application.Handle, '127.0.0.1', 10001) then begin ShowMessage('连接服务器失败!'); abort; end; end procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin FreeSckt;(客户端关闭的时候运行到这里就不动了,DLL中的代码见上面) end; 各位帮帮忙看看啊,搞了好几天都没有头绪啊,实在是搞不定了,请求帮助。 |
sdlyzhlmxh
一般會員 發表:0 回覆:2 積分:5 註冊:2004-08-28 發送簡訊給我 |
|
zyyjcking
一般會員 發表:1 回覆:2 積分:0 註冊:2007-04-19 發送簡訊給我 |
===================引 用 sdlyzhlmxh 文 章=================== 你的FreeSckt:过程是在哪调用的。 在FormClose中调用,也就是程序关闭的时候 |
zyyjcking
一般會員 發表:1 回覆:2 積分:0 註冊:2007-04-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |