www.pudn.com > AVideoCapture.rar > SockUnt.pas


unit SockUnt; 
 
interface 
 
uses Sysutils, Dialogs; 
 
procedure sendcommand(Sender, Cmd, par: string); //数据传送模块 
procedure Data_Deal(Cmd: string; R_Data: string); //数据接收模块,用于接收超过buffersize值的长数据 
function Data_Check(Check_Data: string): Boolean; 
procedure Command_Deal(DataStr: string); 
 
implementation 
 
uses MainUnt, AVideoStatusUnt, AVideoFunctionUnt, CastOprUnt, UserPowerUnt; 
 
var 
  SockData: T_SockData; 
 
procedure sendcommand(Sender, Cmd, par: string); 
begin 
  Main.ClientSocket.Socket.SendText(Sender + Cmd + par + DataEnd); 
end; 
 
procedure Command_Deal(DataStr: string); 
var 
  CmdStr: WideString; 
begin 
  try 
    if Pos(SocketServer, DataStr) > 0 then Delete(DataStr, 1, Length(SocketServer)) 
    else if Pos(Operate_Data, DataStr) > 0 then Delete(DataStr, 1, Length(Operate_Data)) 
    else Exit; 
    CmdStr := Copy(DataStr, 1, Pos(OverStr, DataStr) + 2); 
    Delete(DataStr, 1, Pos(OverStr, DataStr) + 2); 
    DataStr := Copy(DataStr, 1, Pos(DataEnd, DataStr) - 1); 
    {Enter_Allow/*/AbsDataEnd+#13 
    cmdStr:Enter_Allow/*/ 
    DataStr:Abs 
    DataEnd:DataEnd+#13} 
    if Copy(CmdStr, 1, 5) = 'Data-' then Data_Deal(Copy(CmdStr, 6, Length(CmdStr) - 8), DataStr) 
    else if CmdStr = Enter_Allow then MyEnter_Allow(DataStr) //登录确认 
    else if CmdStr = Select_LiveChannels then MySelect_LiveChannels(DataStr) //直播服务器采集卡 通道明细表 
    else if CmdStr = Select_ResServer then MySelect_ResServer(DataStr) 
    else if CmdStr = SerOpr_Allow then MyLocSerOpr_Allow() //确认本地操作——桌面直播 
    else if CmdStr = Query_Desktop then MyQuery_Desktop(DataStr) 
    else if CmdStr = Reset then PowerOff(False) //重启采集端计算机 
    else if CmdStr = ShutDown then PowerOff(True) //关闭采集端计算机 
    else if CmdStr = 'TimerEnabled/*/' then TimerEnabled 
    else if Desktop then begin 
      if (CmdStr = SerOpr_Query) then UserPower.MySerOpr_Query() //服务器要求操作权 
      else if CmdStr = SaveFileName then MyDesktopSaveFile(DataStr) //桌面录制文件 
    end 
    else begin 
      if (CmdStr = Set_Options) or (CmdStr = BeginCast) or (CmdStr = BeginFileCast) or (CmdStr = SaveFileName) then 
        MySet_Options(DataStr) //设置运行参数、现场直播、录制文件 
      else if CmdStr = StopCast then myStopCast(DataStr) //停止频道 
      else if CmdStr = StopSaveFile then MyStopSaveFile(DataStr) //停止录制文件 
      else if CmdStr = Query_ChannelStatus then MyQuery_ChannelStatus(DataStr) //查询状态 
      else if CmdStr = TCPListenPort then MyTCPListenPort(DataStr) //设置监视端口 
      else if CmdStr = CheckTVSignal then MyCheckTVSignal(DataStr) //检测电视信号 
      else if CmdStr = MultiAddr then MyMultiAddr(-1, DataStr) 
      else if CmdStr = CapVideoDevice then MyCapVideoDevice(-1, DataStr) 
      else if CmdStr = CapAudioDevice then MyCapAudioDevice(-1, DataStr) 
      else if CmdStr = MultiPort then MyMultiPort(-1, DataStr) 
      else if CmdStr = SendIP then MySendIP(-1, DataStr) 
      else if CmdStr = TcpSendPort then MyTcpSendPort(-1, DataStr) 
      else if CmdStr = RunMode then MyRunMode(-1, DataStr) 
      else if CmdStr = VideoBitRate then MyVideoBitRate(-1, DataStr) 
      else if CmdStr = AudioBitRate then MyAudioBitRate(-1, DataStr) 
      else if CmdStr = IsStereoAudio then MyIsStereoAudio(-1, DataStr) 
      else if CmdStr = ShowVideo then MyShowVideo(-1, DataStr) 
      else if CmdStr = showaudio then MyShowAudio(-1, DataStr) 
      else if CmdStr = SetVideoFormat then MySetVideoFormat(-1, DataStr) 
      else if CmdStr = VideoStandard then MyVideoStandard(-1, DataStr) 
      else if CmdStr = VideoSource then MyVideoSource(-1, DataStr) 
      else if CmdStr = AudioSource then MyAudioSource(-1, DataStr) 
      else if CmdStr = sendvideo then MySendVideo(-1, DataStr) 
      else if CmdStr = sendaudio then MySendAudio(-1, DataStr) 
      else if CmdStr = ChooseVideoFormat then MyChooseVideoFormat(-1, DataStr) 
      else if CmdStr = ChannelDescribe then MyChannelDescribe(-1, DataStr) 
      else if CmdStr = CastFileName then MyCastFileName(-1, DataStr) 
      else if CmdStr = RecFileName then MyRecFileName(-1, DataStr) 
      else if CmdStr = RecTime then MyRecTime(-1, DataStr) 
      else if CmdStr = BottomText then MyBottomText(-1, DataStr) 
      else if CmdStr = TopText then MyTopText(-1, DataStr) 
      else if CmdStr = TextColor then MyTextColor(-1, DataStr) 
      else if CmdStr = BottomTextMode then MyBottomTextMode(-1, DataStr) 
      else if CmdStr = TextHeight then MyTextHeight(-1, DataStr) 
      else if CmdStr = TVChannel then MyTVChannel(-1, DataStr) 
      else if CmdStr = TVAudioMode then MyTVAudioMode(-1, DataStr) 
      else if CmdStr = Replay then MyReplay(-1, DataStr) 
      else if CmdStr = TaskTime then MyTaskTime(-1, DataStr) 
    end; 
  except 
  end; 
end; 
 
procedure Data_Deal(Cmd: string; R_Data: string); 
begin 
  if Cmd = 'Put' then begin 
    Data_Check(R_Data); 
  end 
  else if Cmd = 'End' then begin 
    if Data_Check(R_Data) = True then begin 
      Command_Deal(SockData.GetData + DataEnd); 
      SockData.GetData := ''; 
    end 
  end 
  else if Cmd = 'Err' then 
  else if Cmd = 'ok' then 
end; 
 
function Data_Check(Check_Data: string): Boolean; 
var 
  L: Integer; 
  t: string; 
begin 
  t := Check_Data; 
  L := StrToInt(Copy(t, 1, Pos(';', t) - 1)); 
  t := Copy(t, Pos(';', t) + 1, Length(t) - Pos(';', t)); 
  if L = Length(t) then begin 
    SockData.GetData := SockData.GetData + t; 
    sendcommand(SocketClient, 'Data-Ok', ''); 
    result := True; 
  end 
  else begin 
    sendcommand(SocketClient, 'Data-Err', ''); 
    result := False; 
  end; 
end; 
 
end.