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.