while not Terminated and ClientSocket.Connected do
begin
Stream := TWinSocketStream.Create(ClientSocket, 60000);
ZeroMemory(@Send_info,SizeOf(Send_info));
ZeroMemory(@Rece_info,SizeOf(Rece_info));
if Stream.WaitForData(60000) then
begin
Stream.Read(rece_info,SizeOf(Rece_info));
// 20090531 zhch
FrmMainMSOCKET.richedit.Lines.Add(inttostr(Rece_info.SendSize));
FrmMainMSOCKET.richedit.Lines.Add(Rece_info.SendType);
FrmMainMSOCKET.richedit.Lines.Add('********************');
if Rece_info.SendType = '' then
begin
FrmMainMSOCKET.richedit.Lines.Add('nnnnnnnn');
continue;
end;
Rece_SendType := StrToInt(Rece_info.SendType);
begin
Stream := TWinSocketStream.Create(ClientSocket, 60000);
ZeroMemory(@Send_info,SizeOf(Send_info));
ZeroMemory(@Rece_info,SizeOf(Rece_info));
if Stream.WaitForData(60000) then
begin
Stream.Read(rece_info,SizeOf(Rece_info));
// 20090531 zhch
FrmMainMSOCKET.richedit.Lines.Add(inttostr(Rece_info.SendSize));
FrmMainMSOCKET.richedit.Lines.Add(Rece_info.SendType);
FrmMainMSOCKET.richedit.Lines.Add('********************');
if Rece_info.SendType = '' then
begin
FrmMainMSOCKET.richedit.Lines.Add('nnnnnnnn');
continue;
end;
Rece_SendType := StrToInt(Rece_info.SendType);
解决方案 »
- delphi基础问题:char字符数组赋值。
- 为什么我写的ftp客户端无法连上FTP服务器,但是用cuteftp没问题?
- delphi 所有程序运行调试都出现cpu窗口,急!
- fastreport3.18对话框中的文本框不能录入中文
- delphi程序移植到Unix平台讨论.顶也有分.
- wwdbgrid的系列问题解决之道
- 妈的郁闷,以前的ID这么快就有人拿去用了……
- 招聘Delphi程序员(广州)
- 有一个页面上有三个空白需要填写(“姓名”“年龄”“学号”),其中至少要填一项,只用一个“提交”BUTTON,从一个表上查询,请问SQL语
- 小菜弟问题1
- 如何把vb编写的Activex dll转化为用delphi来编写?
- 如何把2个事件相加?
procedure TfrmMain.SendPackage;
var
Buf:array[0..1023] of char;
begin
if StreamSize >= BufSize then
begin
SendRealSize := BufSize ;
MemUpLogs.Lines.Append('aa1*'+inttostr(SendRealSize)) ;
end else
begin
SendRealSize := StreamSize;
MemUpLogs.Lines.Append('aa2*'+inttostr(SendRealSize)) ;
end;
MemoryStream.ReadBuffer(Buf,SendRealSize);
Move(Buf,Send_info.senddata,SendRealSize);
StreamSize := StreamSize - SendRealSize;
MemUpLogs.Lines.Append('aa3*'+inttostr(StreamSize)) ;
if StreamSize = 0 then
begin
with Send_info do
begin
MemUpLogs.Lines.Append('aa4*'+inttostr(StreamSize)) ;
Move('11',SendType,SizeOf(SendType));
MemUpLogs.Lines.Append('aa5*'+SendType) ;
SendSize := SendRealSize;
MemUpLogs.Lines.Append('aa6*'+inttostr(SendSize)) ;
// SendType := '11';
// SendSize := SendRealSize;
end;
MemoryStream.Free;
end else
begin
with Send_info do
begin
MemUpLogs.Lines.Append('aa7*'+inttostr(StreamSize)) ;
Move('10',SendType,SizeOf(SendType));
MemUpLogs.Lines.Append('aa8*'+SendType) ;
SendSize := SendRealSize;
MemUpLogs.Lines.Append('aa9*'+inttostr(SendSize)) ;
// SendType := '10';
// SendSize := SendRealSize;
end;
end;
try
MemUpLogs.Lines.Append('aa10*'+inttostr(Send_info.SendSize)) ;
C_Socket.Socket.SendBuf(Send_Info,SizeOf(Send_info));
MemUpLogs.Lines.Append('aa11*'+inttostr(Send_info.SendSize)) ;
MemUpLogs.Lines.Append('aa12*'+Send_info.SendType) ;
except
C_Socket.Active := False;
end;end;
执行 C_Socket.Socket.SendBuf(Send_Info,SizeOf(Send_info));后服务端接收到两个流,一个是有数据的,另一个流为空,为什么会这样,经测试客户端直接向中心传数据不会出现此情况,而客户端将非本机数据往中心传时才会出现上述情况,请高手指点,谢谢