在dll中实现socket通信,菜鸟问题,各位大侠赐教,很急!!! ( 积分: 100 )

  • 主题发起人 主题发起人 maoke
  • 开始时间 开始时间
M

maoke

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟受命用delphi做一个dll实现socket通信,用阻塞方式,与一个已经做好的通讯服务器相连,取得数据,也要发送数据。同时取得的数据和取得数据的函数与过程都要供调用者使用,调用我的dll的有delphi做的c/s版程序,也有.net版的web服务器程序,因此我不能使用Form。
请问我具体该如何做呢?
用Tclientsocket在c/s版程序下作通讯,我会那么一点,知道应该在Tclientsocket的OnConnect、OnDisconnect、OnError、OnRead等中写代码,但是放在dll中我就不会啦,请大侠们指教。
 
小弟受命用delphi做一个dll实现socket通信,用阻塞方式,与一个已经做好的通讯服务器相连,取得数据,也要发送数据。同时取得的数据和取得数据的函数与过程都要供调用者使用,调用我的dll的有delphi做的c/s版程序,也有.net版的web服务器程序,因此我不能使用Form。
请问我具体该如何做呢?
用Tclientsocket在c/s版程序下作通讯,我会那么一点,知道应该在Tclientsocket的OnConnect、OnDisconnect、OnError、OnRead等中写代码,但是放在dll中我就不会啦,请大侠们指教。
 
你可以用阻塞方式
 
var
ClientSocket : TclientSocket;
ClientSocket := TClientSocket.Create(nil);
ClientSocket.Clienttype := ctBlocking;
ClientSocket.port := 9999;
ClentSocket.Send
上面的是是用阻塞的办法

type
Tcc = class(Tclientsocket)
procedure CcConnect(Sender: TObject;Socket: TCustomWinSocket);
end;
procedure ccConnect(Sender: TObject;Socket: TCustomWinSocket);
begin
....
end;
调用
C:= TClientSocket.Create(Self);
事件触发:
c.onconnet:=ccConnect; //
c.destory;
这个是用非阻塞的办法
 
在动态库中一样用
 
QQ群:10577739
10577780
大虾菜鸟来交流
 
1、第一,事件也是属性,你应该找相关的书看
2、
ClientSocket1.OnRead=ClientSocket1Read;
procedure ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
FullText: string;
sCMD, sTrueData: string;
bufRecv: Pointer;
iLength: Integer;
s: string;
begin
iLength := Socket.ReceiveLength;
GetMem(bufRecv, iLength);
Socket.ReceiveBuf(bufRecv^, iLength); //
sCMD := StrPas(PChar(bufRecv));

FullText := sCMD;

sTrueData := Copy(sCMD, 19, length(sCMD) - 18);
sCMD := Copy(sCMD, 1, 18);

if sCMD = MP_CHAT then begin
exit;
end;
end;
 

Similar threads

回复
0
查看
978
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部