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);
解决方案 »
- 怎么获取文件的大小呀?!!!
- 请问我加了一个PopupMenu,需要用Tbutton按钮激活该菜单,但是....
- 如何在delphi中使用dso连接olap服务器,进行角色管理?
- 我在WIN2k下写的程序,放在WIN98 下时界面变得很难看该怎么解决!
- 明天去应聘软件开发人员,面试时会问些什么问题呢?
- 删除字符
- 又一個Delphi Fans 的好去處! www.91delphi.com (速度很快) 文銀100請笑納
- 应用程序运行一会后死机的问题,忘高手指点!
- dbgrid中如何实现对任意列排序
- delphi对图片的操作
- 如何把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));后服务端接收到两个流,一个是有数据的,另一个流为空,为什么会这样,经测试客户端直接向中心传数据不会出现此情况,而客户端将非本机数据往中心传时才会出现上述情况,请高手指点,谢谢