Skip to content

Commit 6e246fb

Browse files
committed
added:annoy forward example support
1 parent 0b64eae commit 6e246fb

File tree

1 file changed

+105
-7
lines changed

1 file changed

+105
-7
lines changed

XEngine_APPClient/APPClient_ForwardExample/APPClient_ForwardExample.cpp

Lines changed: 105 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,8 @@
3232
//linux使用下面的命令编译
3333
//g++ -std=c++20 -Wall -g APPClient_ForwardExample.cpp -o APPClient_ForwardExample.exe -I ../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp -L ../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp -lXEngine_BaseLib -lXClient_Socket -lRfcComponents_ProxyProtocol -ljsoncpp
3434

35-
int main(int argc, char** argv)
35+
int Proxy_NamedTest()
3636
{
37-
#ifdef _MSC_BUILD
38-
WSADATA st_WSAData;
39-
WSAStartup(MAKEWORD(2, 2), &st_WSAData);
40-
#endif
4137
XSOCKET m_Socket;
4238
LPCXSTR lpszServiceAddr = _X("127.0.0.1");
4339
if (!XClient_TCPSelect_Create(&m_Socket, lpszServiceAddr, 5402))
@@ -184,11 +180,113 @@ int main(int argc, char** argv)
184180
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
185181
}
186182
}
187-
}
183+
}
188184
}
189185

190-
std::this_thread::sleep_for(std::chrono::seconds(20000));
191186
XClient_TCPSelect_Close(m_Socket);
187+
return 0;
188+
}
189+
int Proxy_AnonyTest()
190+
{
191+
XSOCKET m_Socket;
192+
LPCXSTR lpszServiceAddr = _X("127.0.0.1");
193+
if (!XClient_TCPSelect_Create(&m_Socket, lpszServiceAddr, 5402))
194+
{
195+
printf("连接失败!错误:%lX\n", XClient_GetLastError());
196+
return 0;
197+
}
198+
printf("连接成功!\n");
199+
200+
int nMsgLen = 0;
201+
XENGINE_PROTOCOLHDR st_ProtocolHdr;
202+
XENGINE_PROTOCOL_USERAUTH st_UserAuth;
203+
204+
memset(&st_ProtocolHdr, '\0', sizeof(XENGINE_PROTOCOLHDR));
205+
memset(&st_UserAuth, '\0', sizeof(XENGINE_PROTOCOL_USERAUTH));
206+
//登录
207+
st_ProtocolHdr.wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER;
208+
st_ProtocolHdr.wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL;
209+
st_ProtocolHdr.byIsReply = true;
210+
st_ProtocolHdr.byVersion = 0;
211+
st_ProtocolHdr.unPacketSize = sizeof(XENGINE_PROTOCOL_USERAUTH);
212+
st_ProtocolHdr.unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH;
213+
st_ProtocolHdr.unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_FORWARD_LOGREQ;
214+
215+
_tcsxcpy(st_UserAuth.tszUserName, "test");
216+
217+
if (!XClient_TCPSelect_SendMsg(m_Socket, (LPCXSTR)&st_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR)))
218+
{
219+
printf("发送失败!\n");
220+
return 0;
221+
}
222+
if (!XClient_TCPSelect_SendMsg(m_Socket, (LPCXSTR)&st_UserAuth, sizeof(XENGINE_PROTOCOL_USERAUTH)))
223+
{
224+
printf("发送失败!\n");
225+
return 0;
226+
}
227+
228+
nMsgLen = 0;
229+
XCHAR* ptszMsgBuffer = NULL;
230+
memset(&st_ProtocolHdr, '\0', sizeof(XENGINE_PROTOCOLHDR));
231+
if (!XClient_TCPSelect_RecvPkt(m_Socket, &ptszMsgBuffer, &nMsgLen, &st_ProtocolHdr))
232+
{
233+
printf("接受数据失败!\n");
234+
return 0;
235+
}
236+
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
237+
//匿名转发请求
238+
Json::Value st_JsonRoot;
239+
st_JsonRoot["tszDstAddr"] = "127.0.0.1:5401";
240+
241+
st_ProtocolHdr.wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER;
242+
st_ProtocolHdr.wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL;
243+
st_ProtocolHdr.byIsReply = true;
244+
st_ProtocolHdr.byVersion = 0;
245+
st_ProtocolHdr.unPacketSize = st_JsonRoot.toStyledString().length();
246+
st_ProtocolHdr.unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_USER_FORWARD;
247+
st_ProtocolHdr.unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_FORWARD_ANONYREQ;
248+
if (!XClient_TCPSelect_SendMsg(m_Socket, (LPCXSTR)&st_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR)))
249+
{
250+
printf("发送失败!\n");
251+
return 0;
252+
}
253+
if (!XClient_TCPSelect_SendMsg(m_Socket, st_JsonRoot.toStyledString().c_str(), st_ProtocolHdr.unPacketSize))
254+
{
255+
printf("发送失败!\n");
256+
return 0;
257+
}
258+
nMsgLen = 2048;
259+
if (!XClient_TCPSelect_RecvPkt(m_Socket, &ptszMsgBuffer, &nMsgLen, &st_ProtocolHdr))
260+
{
261+
printf("接受数据失败!\n");
262+
return 0;
263+
}
264+
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
265+
//成功后发送数据
266+
XClient_TCPSelect_SendMsg(m_Socket, "hello", 5);
267+
std::this_thread::sleep_for(std::chrono::seconds(1));
268+
printf("send 5 str\n");
269+
//接受数据
270+
nMsgLen = 2048;
271+
XCHAR tszMsgBuffer[2048] = {};
272+
if (XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen))
273+
{
274+
printf("%s\n", tszMsgBuffer);
275+
}
276+
277+
XClient_TCPSelect_Close(m_Socket);
278+
return 0;
279+
}
280+
281+
int main(int argc, char** argv)
282+
{
283+
#ifdef _MSC_BUILD
284+
WSADATA st_WSAData;
285+
WSAStartup(MAKEWORD(2, 2), &st_WSAData);
286+
#endif
287+
288+
Proxy_AnonyTest();
289+
Proxy_NamedTest();
192290
#ifdef _MSC_BUILD
193291
WSACleanup();
194292
#endif

0 commit comments

Comments
 (0)