本文整理汇总了C++中Csock::GetSockName方法的典型用法代码示例。如果您正苦于以下问题:C++ Csock::GetSockName方法的具体用法?C++ Csock::GetSockName怎么用?C++ Csock::GetSockName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Csock
的用法示例。
在下文中一共展示了Csock::GetSockName方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnWebRequest
bool OnWebRequest(CWebSock& WebSock, const CString& sPageName,
CTemplate& Tmpl) override {
if (sPageName == "index") {
if (CZNC::Get().GetManager().empty()) {
return false;
}
std::priority_queue<CSocketSorter> socks = GetSockets();
while (!socks.empty()) {
Csock* pSocket = socks.top().GetSock();
socks.pop();
CTemplate& Row = Tmpl.AddRow("SocketsLoop");
Row["Name"] = pSocket->GetSockName();
Row["Created"] = GetCreatedTime(pSocket);
Row["State"] = GetSocketState(pSocket);
Row["SSL"] = pSocket->GetSSL() ? "Yes" : "No";
Row["Local"] = GetLocalHost(pSocket, true);
Row["Remote"] = GetRemoteHost(pSocket, true);
Row["In"] = CString::ToByteStr(pSocket->GetBytesRead());
Row["Out"] = CString::ToByteStr(pSocket->GetBytesWritten());
}
return true;
}
return false;
}
示例2: GetAnonConnectionCount
unsigned int CSockManager::GetAnonConnectionCount(const CString &sIP) const {
const_iterator it;
unsigned int ret = 0;
for (it = begin(); it != end(); ++it) {
Csock *pSock = *it;
// Logged in CClients have "USR::<username>" as their sockname
if (pSock->GetType() == Csock::INBOUND && pSock->GetRemoteIP() == sIP
&& !pSock->GetSockName().StartsWith("USR::")) {
ret++;
}
}
DEBUG("There are [" << ret << "] clients from [" << sIP << "]");
return ret;
}
示例3: ShowSocks
void ShowSocks(bool bShowHosts) {
if (CZNC::Get().GetManager().empty()) {
PutStatus("You have no open sockets.");
return;
}
std::priority_queue<CSocketSorter> socks = GetSockets();
CTable Table;
Table.AddColumn("Name");
Table.AddColumn("Created");
Table.AddColumn("State");
#ifdef HAVE_LIBSSL
Table.AddColumn("SSL");
#endif
Table.AddColumn("Local");
Table.AddColumn("Remote");
Table.AddColumn("In");
Table.AddColumn("Out");
while (!socks.empty()) {
Csock* pSocket = socks.top().GetSock();
socks.pop();
Table.AddRow();
Table.SetCell("Name", pSocket->GetSockName());
Table.SetCell("Created", GetCreatedTime(pSocket));
Table.SetCell("State", GetSocketState(pSocket));
#ifdef HAVE_LIBSSL
Table.SetCell("SSL", pSocket->GetSSL() ? "Yes" : "No");
#endif
Table.SetCell("Local", GetLocalHost(pSocket, bShowHosts));
Table.SetCell("Remote", GetRemoteHost(pSocket, bShowHosts));
Table.SetCell("In", CString::ToByteStr(pSocket->GetBytesRead()));
Table.SetCell("Out",
CString::ToByteStr(pSocket->GetBytesWritten()));
}
PutModule(Table);
return;
}
示例4: ShowSocks
void ShowSocks(bool bShowHosts) {
CSockManager& m = CZNC::Get().GetManager();
if (!m.size()) {
PutStatus("You have no open sockets.");
return;
}
std::priority_queue<CSocketSorter> socks;
for (unsigned int a = 0; a < m.size(); a++) {
socks.push(m[a]);
}
CTable Table;
Table.AddColumn("Name");
Table.AddColumn("Created");
Table.AddColumn("State");
#ifdef HAVE_LIBSSL
Table.AddColumn("SSL");
#endif
Table.AddColumn("Local");
Table.AddColumn("Remote");
while (!socks.empty()) {
Csock* pSocket = socks.top().GetSock();
socks.pop();
Table.AddRow();
switch (pSocket->GetType()) {
case Csock::LISTENER:
Table.SetCell("State", "Listen");
break;
case Csock::INBOUND:
Table.SetCell("State", "Inbound");
break;
case Csock::OUTBOUND:
if (pSocket->IsConnected())
Table.SetCell("State", "Outbound");
else
Table.SetCell("State", "Connecting");
break;
default:
Table.SetCell("State", "UNKNOWN");
break;
}
unsigned long long iStartTime = pSocket->GetStartTime();
time_t iTime = iStartTime / 1000;
Table.SetCell("Created", FormatTime("%Y-%m-%d %H:%M:%S", iTime));
#ifdef HAVE_LIBSSL
if (pSocket->GetSSL()) {
Table.SetCell("SSL", "Yes");
} else {
Table.SetCell("SSL", "No");
}
#endif
Table.SetCell("Name", pSocket->GetSockName());
CString sVHost;
if (bShowHosts) {
sVHost = pSocket->GetBindHost();
}
if (sVHost.empty()) {
sVHost = pSocket->GetLocalIP();
}
Table.SetCell("Local", sVHost + " " + CString(pSocket->GetLocalPort()));
CString sHost;
if (!bShowHosts) {
sHost = pSocket->GetRemoteIP();
}
// While connecting, there might be no ip available
if (sHost.empty()) {
sHost = pSocket->GetHostName();
}
u_short uPort;
// While connecting, GetRemotePort() would return 0
if (pSocket->GetType() == Csock::OUTBOUND) {
uPort = pSocket->GetPort();
} else {
uPort = pSocket->GetRemotePort();
}
if (uPort != 0) {
Table.SetCell("Remote", sHost + " " + CString(uPort));
} else {
Table.SetCell("Remote", sHost);
}
}
PutModule(Table);
return;
}
示例5: OnModCommand
virtual void OnModCommand(const CString& sCommand)
{
CString sCom = sCommand.Token(0);
CString sArgs = sCommand.Token(1, true);
if (sCom.Equals("chat") && !sArgs.empty()) {
CString sNick = "(s)" + sArgs;
set<CSocket*>::const_iterator it;
for (it = BeginSockets(); it != EndSockets(); ++it) {
CSChatSock *pSock = (CSChatSock*) *it;
if (pSock->GetChatNick().Equals(sNick)) {
PutModule("Already Connected to [" + sArgs + "]");
return;
}
}
CSChatSock *pSock = new CSChatSock(this, sNick);
pSock->SetCipher("HIGH");
pSock->SetPemLocation(m_sPemFile);
u_short iPort = m_pManager->ListenRand(pSock->GetSockName() + "::LISTENER",
m_pUser->GetLocalDCCIP(), true, SOMAXCONN, pSock, 60);
if (iPort == 0) {
PutModule("Failed to start chat!");
return;
}
stringstream s;
s << "PRIVMSG " << sArgs << " :\001";
s << "DCC SCHAT chat ";
s << CUtils::GetLongIP(m_pUser->GetLocalDCCIP());
s << " " << iPort << "\001";
PutIRC(s.str());
} else if (sCom.Equals("list")) {
CTable Table;
Table.AddColumn("Nick");
Table.AddColumn("Created");
Table.AddColumn("Host");
Table.AddColumn("Port");
Table.AddColumn("Status");
Table.AddColumn("Cipher");
set<CSocket*>::const_iterator it;
for (it = BeginSockets(); it != EndSockets(); ++it) {
Table.AddRow();
CSChatSock *pSock = (CSChatSock*) *it;
Table.SetCell("Nick", pSock->GetChatNick());
unsigned long long iStartTime = pSock->GetStartTime();
time_t iTime = iStartTime / 1000;
char *pTime = ctime(&iTime);
if (pTime) {
CString sTime = pTime;
sTime.Trim();
Table.SetCell("Created", sTime);
}
if (pSock->GetType() != CSChatSock::LISTENER) {
Table.SetCell("Status", "Established");
Table.SetCell("Host", pSock->GetRemoteIP());
Table.SetCell("Port", CString(pSock->GetRemotePort()));
SSL_SESSION *pSession = pSock->GetSSLSession();
if (pSession && pSession->cipher && pSession->cipher->name)
Table.SetCell("Cipher", pSession->cipher->name);
} else {
Table.SetCell("Status", "Waiting");
Table.SetCell("Port", CString(pSock->GetLocalPort()));
}
}
if (Table.size()) {
PutModule(Table);
} else
PutModule("No SDCCs currently in session");
} else if (sCom.Equals("close")) {
if (!sArgs.Equals("(s)", false, 3))
sArgs = "(s)" + sArgs;
set<CSocket*>::const_iterator it;
for (it = BeginSockets(); it != EndSockets(); ++it) {
CSChatSock *pSock = (CSChatSock*) *it;
if (sArgs.Equals(pSock->GetChatNick())) {
pSock->Close();
return;
}
}
PutModule("No Such Chat [" + sArgs + "]");
} else if (sCom.Equals("showsocks") && m_pUser->IsAdmin()) {
CTable Table;
Table.AddColumn("SockName");
Table.AddColumn("Created");
Table.AddColumn("LocalIP:Port");
Table.AddColumn("RemoteIP:Port");
Table.AddColumn("Type");
//.........这里部分代码省略.........