一段登陆验证服务器需要的加密解密过程,c语言的东西,帮忙翻译成delphi的,要注释

stgsd 2004-10-16 10:06:08
**这是客户端连接代理时候代理处理的代码//**
void CListenSocket::OnAccept(int nErrorCode)
{ char buf[0x1000];
char codebuf[0x1000];
int retval=0;
unsigned int bytesend=0;
//MMSG msg;
const char mirver[]="<mir152>";
const char fjdshfa[]="<C7ACA755D8C89168D6FCB949EA62CC1B32B03AA77443C73FFCA7533C5D1A6DD740E8>";
const char answer[]= "<C7ACA755D8C89168D6FCB949EA62CC1B32B03AA77443C73FFCA7533C5D1A6DD740E824>";
const char pass[]="<pass>";
CString str;
CString account;
CString password;
CSocket sktClient;
CSocket sktServer;
if(Accept(sktClient))
{ retval=sktClient.Receive(buf,0x1000);
buf[retval]=(char)0;
if(strcmp(buf,mirver)!=0)
{ sktClient.Close();
return;
}
sktClient.Send(fjdshfa,strlen(fjdshfa));
retval=sktClient.Receive(buf,0x1000);
buf[retval]=(char)0;
if(strcmp(buf,answer)!=0)
{ sktClient.Close();
return;
}
sktClient.Send(pass,strlen(pass));
retval=sktClient.Receive(buf,0x1000);
buf[retval]=(char)0;
if(buf[retval-1]=='>')
buf[retval-1]=(char)0;
DecodeGate(&buf[1],codebuf);
sktServer.Create();
if(sktServer.Connect(m_ServerIp,7000)==0)
{ AfxGetMainWnd()->MessageBox("连接服务器失败",m_ServerIp); sktClient.Close();
return;
}
bytesend=0;
do
{
retval=sktServer.Send(codebuf+bytesend,strlen(codebuf)-bytesend);
if (retval==SOCKET_ERROR)
{
sktClient.Close();
sktServer.Close();
return;
}
bytesend+=retval;
}
while(bytesend < strlen(codebuf));
retval=sktServer.Receive(buf,0x1000);
buf[retval]=(char)0;
ZeroMemory(codebuf,0x1000);
EncodeGate(buf,codebuf);
sprintf(buf,"<%s>",codebuf);
sktClient.Send(buf,strlen(buf));
retval=sktClient.Receive(buf,0x1000);
buf[retval]=(char)0;
if(buf[retval-1]=='>')
buf[retval-1]=(char)0;
DecodeGate(&buf[1],codebuf);
bytesend=0;
do {
retval=sktServer.Send(codebuf+bytesend,strlen(codebuf)-bytesend);
if(retval==SOCKET_ERROR)
{ sktClient.Close();
sktServer.Close();
return; }
bytesend+=retval;
}
while(bytesend < strlen(codebuf));
retval=sktServer.Receive(buf,0x1000);
buf[retval]=(char)0;
ZeroMemory(codebuf,0x1000);
EncodeGate(buf,codebuf);
sprintf(buf,"<%s>",codebuf);
sktClient.Send(buf,strlen(buf)); }
sktClient.Close();
sktServer.Close();
CSocket::OnAccept(nErrorCode);}//****************************************************

...全文
143 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
stgsd 2004-10-20
  • 打赏
  • 举报
回复
算了,………………
stgsd 2004-10-18
  • 打赏
  • 举报
回复
上面写了些什么东西?
zjqyb 2004-10-17
  • 打赏
  • 举报
回复
procedure CListenSocket.OnAccept(nErrorCode:integer);
const BufSize=$1000;
type
BufType=Array[0..BufSize-1] of Char;
var
buf,codebuf:BufType;
retval:integer;
bytesend:uint;
//MMSG msg;
const mirveruf:PChar:='<mir152>';
const fjdshfa:PChar:='<C7ACA755D8C89168D6FCB949EA62CC1B32B03AA77443C73FFCA7533C5D1A6DD740E8>';
const answer:PChar:='<C7ACA755D8C89168D6FCB949EA62CC1B32B03AA77443C73FFCA7533C5D1A6DD740E824>';
const pass:PChar:='<pass>';
str,account,password:String;
sktServer,sktClient:CSocket;
begin
if(Accept(sktClient)) then
begin
retval:=sktClient.Receive(buf,$1000);
buf[retval]:=#0;
if(strocmp(buf,mirver)<>0) then
begin
sktClient.Close();
exit;
end;
sktClient.Send(fjdshfa,strlen(fjdshfa));
retval:=sktClient.Receive(buf,$1000);
buf[retval]:=#0;
if(strocmp(buf,answer)<>0) then
begin
sktClient.Close();
exit;
end;
sktClient.Send(pass,strlen(pass));
retval:=sktClient.Receive(buf,$1000);
buf[retval]:=#0;
if(buf[retval-1]='>') then
buf[retval-1]:=#0;
DecodeGate(@buf[1],codebuf);
sktServer.Create();
if(sktServer.Connect(m_ServerIp,7000)=0) then
begin
MessageBox(0,"连接服务器失败",m_ServerIp,mbok);
sktClient.Close();
exit;
end;
bytesend=0;
repeat
retval:=sktServer.Send(codebuf+bytesend,strlen(codebuf)-bytesend);
if (retval=SOCKET_ERROR) then
begin
sktClient.Close();
sktServer.Close();
exit;
end;
inc(bytesend,retval);
until (bytesend >= strlen(codebuf));
retval:=sktServer.Receive(buf,$1000);
buf[retval]:=#0;
ZeroMemory(@codebuf,$1000);
EncodeGate(buf,codebuf);
StrFmt(buf,'<%s>',[codebuf]);
sktClient.Send(buf,strlen(buf));
retval:=sktClient.Receive(buf,0x1000);
buf[retval]:=#0;
if(buf[retval-1]='>') then
buf[retval-1]:=#0;
DecodeGate(@buf[1],codebuf);
bytesend:=0;
repeat
if (retval=SOCKET_ERROR) then
begin
sktClient.Close();
sktServer.Close();
exit;
end;
inc(bytesend,retval);
until(bytesend >= strlen(codebuf));
retval:=sktServer.Receive(buf,$1000);
buf[retval]:=#0;
ZeroMemory(@codebuf,$1000);
EncodeGate(buf,codebuf);
StrFmt(buf,'<%s>',[codebuf]);
sktClient.Send(buf,strlen(buf));
end;
sktClient.Close();
sktServer.Close();
end;
// 大致如此,代码好多可以合并优化
stgsd 2004-10-17
  • 打赏
  • 举报
回复
这是盛大传奇自己搞的网络验证,大家加油啊
ksaiy 2004-10-16
  • 打赏
  • 举报
回复
偶也翻译不下去了。。。。
纯冰糖 2004-10-16
  • 打赏
  • 举报
回复
定义一个字符串数组,然后。。。就头疼,呵呵
纯冰糖 2004-10-16
  • 打赏
  • 举报
回复
好家伙,写这个得花些功夫
ly_liuyang 2004-10-16
  • 打赏
  • 举报
回复
看了就头疼

找ARI了,他最在行的:)

http://lysoft.7u7.net

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧