**这是客户端连接代理时候代理处理的代码//**
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);}//****************************************************
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);}//****************************************************
解决方案 »
- delphi将当前dbgrid中数据导出到excel中
- 修改住窗口
- excelworksheet中的第二行的单元格已设置为自动换行,如何让第二行的单元格自动调整行的高度,来显示多行内容?
- 各位大侠,救救急,一有正确答案统统有分
- 编译时出现:statement expected but 'procedure' found,请问怎样调试?
- 请问这是怎么回事
- WebBrowser1.Navigate 无错误不显示网页空白一片
- 100分购买加密解密算法!请看下!急的要命!
- 怎么在twebbrowser中屏蔽掉javascript弹出的框框!
- 请问高手们是怎样取服务器时间的?我都是用select GatDate()
- 怎么继承trackbar控件,使其产生mousedown和mouseup事件,谢谢!
- 关于Delphi的DAX Error问题,搞定给500分....
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;
// 大致如此,代码好多可以合并优化