var FSocketStream:TWinsocketStream; begin FSocketStream:=TWinsocketStream.Create(ClientSocket.Socket,Ftimeout); /.....
procedure TCMPPTest.CMPPClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var CommandID:longword; Recv1,Recv2:integer; begin fillchar(RHead,sizeof(RHead),0); Recv1:=socket.ReceiveBuf(RHead,Sizeof(RHead)); CommandID:=ntohl(RHead.Command_ID); if CommandID=CMPP_TERMINATE_RESP then begin memo2.Lines.Add('********接收到断开请求*******'); fillchar(SHead,sizeof(SHead),0); SHead.Total_length:=htonl(sizeof(SHead)); SHead.Command_ID:=htonl(CMPP_TERMINATE_RESP); SHead.Sequence_ID:=RHead.Sequence_ID; socket.SendBuf(SHead,sizeof(SHead)); end;end;你看我这段有错吗?? 当服务端发送信息时,却收不到!不知道为什么??
兄弟看過來....
http://www.playicq.com/dispsoft.php?id=406
給你的網站是已經開發成型的軟件(聊天)......
我就想知道clientsocket是怎么接收serversocket主动发送过来的信息的!
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScktComp, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
MyServer: TServerSocket;
LogMemo: TMemo;
Panel1: TPanel;
Label1: TLabel;
PortEdit: TEdit;
StartButton: TButton;
StopButton: TButton;
procedure StartButtonClick(Sender: TObject);
procedure StopButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure MyServerClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure MyServerClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
ConnectedList: TStringList;
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.StartButtonClick(Sender: TObject);
begin
if PortEdit.Text = '' then
MyServer.Port := 1971
else
MyServer.Port := StrToInt(PortEdit.Text); Caption := IntToStr(MyServer.Port);
MyServer.Active := true;
StopButton.Enabled := true;
StartButton.Enabled := false;
PortEdit.Enabled := false;
end;procedure TForm1.StopButtonClick(Sender: TObject);
begin
MyServer.Active := false;
StartButton.Enabled := true;
StopButton.Enabled := false;
PortEdit.Enabled := true;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
ConnectedList := TStringList.Create;
end;procedure TForm1.MyServerClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
LogMemo.Lines.Add(Socket.RemoteAddress + ' has connected.');
ConnectedList.AddObject(Socket.RemoteAddress, Socket);
end;procedure TForm1.MyServerClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
LogMemo.Lines.Add(Socket.RemoteAddress + ' has disconnected.');
//SendMessage(Format('%s has disconneted.',OPENARRAY(TVarRec,(ConnectedList.Strings[ConnectedList.IndexOfObject(Socket)]))),'Server');
ConnectedList.Delete(ConnectedList.IndexOfObject(Socket));
end;end.
Socket.ReceiveText
FSocketStream:TWinsocketStream;
begin
FSocketStream:=TWinsocketStream.Create(ClientSocket.Socket,Ftimeout);
/.....
Socket: TCustomWinSocket);
var
CommandID:longword;
Recv1,Recv2:integer;
begin
fillchar(RHead,sizeof(RHead),0);
Recv1:=socket.ReceiveBuf(RHead,Sizeof(RHead));
CommandID:=ntohl(RHead.Command_ID);
if CommandID=CMPP_TERMINATE_RESP then
begin
memo2.Lines.Add('********接收到断开请求*******');
fillchar(SHead,sizeof(SHead),0);
SHead.Total_length:=htonl(sizeof(SHead));
SHead.Command_ID:=htonl(CMPP_TERMINATE_RESP);
SHead.Sequence_ID:=RHead.Sequence_ID;
socket.SendBuf(SHead,sizeof(SHead));
end;end;你看我这段有错吗??
当服务端发送信息时,却收不到!不知道为什么??