void CLeshiEngine::ClientBodyReceived(const TDesC8& aBodyData)
{
int i = 0;
TBuf<300> buf;
buf.Copy(aBodyData);
TBuf<15> buf_ss_ip;
TBuf<10> buf_ss_port;
TInt pos_ip = 92;
TInt len_ip = 12;
TInt pos_port = 116;
TInt len_port = 5;
buf_ss_ip = buf.Mid(pos_ip,len_ip);
buf_ss_port = buf.Mid(pos_port,len_port);
ShowInfo(buf);
}//这个函数是发送http get请求后返回的数据,buf_ss_ip 和buf_ss_port ,是我提取出的IP地址和端口号,
void CTCPConnection::ConnectL() {
iClient = ETrue;
iHost = CLeshiSettings::Static()->GetTCPHostname();
iPortNumber = CLeshiSettings::Static()->GetTCPPort();
// if (!CLeshiSettings::Static()->PredefinedServer()) {
// if (!iGui->GetHostPortL(iHost, iPortNumber)) {
// iAborted = ETrue;
// iState = ENotStarted;
// return;
// }
CLeshiSettings::Static()->SetTCPHostname(iHost);
CLeshiSettings::Static()->SetTCPPort(iPortNumber);
// }
// TBool useConn = EFalse;
// if (CLeshiSettings::Static()->PredefinedAccessPoint())
// useConn = ETrue;
#ifdef UIQ3
useConn = ETrue;
#endif
// if (useConn) {
// User::LeaveIfError(iConn.Open(iSocketServer));
// iConnOpened = ETrue;
// iState = EConnectingNet;
// iStatus = KRequestPending;
// if (CLeshiSettings::Static()->PredefinedAccessPoint()) {
// TCommDbConnPref pref;
// pref.SetDirection(ECommDbConnectionDirectionOutgoing);
// pref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt);
// pref.SetIapId(CLeshiSettings::Static()->AccessPointId());
// iConn.Start(pref, iStatus);
// } else {
// iConn.Start(iStatus);
// }
// SetActive();
// } else {
iState = EConnectingNet;
iStatus = KErrNone;
RunL();
// }
}
void CTCPConnection::AcceptL() {
iClient = EFalse;
TInt port = CLeshiSettings::Static()->GetTCPPort();
if (!CLeshiSettings::Static()->PredefinedServer()) {
if (!iGui->GetPortL(port)) {
iAborted = ETrue;
iState = ENotStarted;
return;
}
CLeshiSettings::Static()->SetTCPPort(port);
}
iState = EListening;
User::LeaveIfError(iListenSocket.Open(iSocketServer, KAfInet, KSockStream, KProtocolInetTcp));
iListenerOpened = ETrue;
iAddress.SetPort(port);
User::LeaveIfError(iListenSocket.Bind(iAddress));
User::LeaveIfError(iListenSocket.Listen(1));
User::LeaveIfError(iSocket.Open(iSocketServer));
iSockOpened = ETrue;
iStatus = KRequestPending;
iListenSocket.Accept(iSocket, iStatus);
SetActive();
}
void CTCPConnection::RunL() {
switch (iState) {
case EConnectingNet:
if (iStatus == KErrNone) {
iState = EResolvingHost;
iTriedV6 = EFalse;
TInt err;
if (iConnOpened)