bool CClientConnection::Login(const char* pUrl, const CClientLoginMethod* pMethod) { ASOCK_ADDR sa; if(!sock_str2addr(pUrl, &sa)) { m_nErrCode = CClient::ERRCODE_UNKOWN; return false; } if(pMethod->GetType()!=CClientLoginMethodByToken::METHOD_TYPE) { m_nErrCode = CClient::ERRCODE_UNKOWN; return false; } const Zion::String& token = ((const CClientLoginMethodByToken*)pMethod)->GetToken(); m_nErrCode = CClient::ERRCODE_SUCCESSED; _U16 len = (_U16)token.size()+1; *((_U16*)(m_LoginData)) = len; memcpy(m_LoginData+sizeof(_U16), token.c_str(), len); m_nLoginDataSize = sizeof(_U16) + len; m_nState = CClient::STATE_LOGINING; if(!Connect(sa)) { m_nState = CClient::STATE_FAILED; SetErrorCode(CClient::ERRCODE_NETWORK); return false; } return true; }
int main(int argc, char* argv[]) { if(argc!=3) { print_usage(); exit(0); } if(sock_str2addr(argv[2], &sa)==NULL) { print_usage(); exit(0); } if(strcmp(argv[1], "client")!=0 && strcmp(argv[1], "server")!=0) { print_usage(); exit(0); } sock_init(); fdwatch_init(); mempool_init(); threadpool_init(1); network_init(20000); if(strcmp(argv[1], "client")==0) { client_do(); } else { server_do(); } network_final(); threadpool_final(); mempool_final(); fdwatch_final(); sock_final(); return 0; }
LRESULT CAttachHostDlg::OnConnectClick(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { char szAddress[sizeof(m_szAddress)]; ::GetWindowText(GetDlgItem(IDC_HOST_ADDRESS), szAddress, sizeof(szAddress)); SOCK_ADDR sa; RPCNET_GROUP* pHost; LUADEBUG_STATEINFO infos[20]; int count, ret, idx; if(!sock_str2addr(szAddress, &sa)) { MessageBox("invalid host address", "ERROR", MB_OK); return 0; } pHost = rpcnet_getgroup(&sa); if(!pHost) { MessageBox("invalid host address", "ERROR", MB_OK); return 0; } count = sizeof(infos)/sizeof(infos[0]); ret = protocol_luaclt_state(pHost, infos, &count); if(ret!=ERR_NOERROR) { MessageBox("Failed to query", "ERROR", MB_OK); return 0; } m_StateList.DeleteAllItems(); for(idx=0; idx<count; idx++) { char tmp[100]; sprintf(tmp, "0x%x", infos[idx].sid); m_StateList.AddItem(idx, 0, tmp); m_StateList.AddItem(idx, 1, infos[idx].name); m_StateList.AddItem(idx, 2, infos[idx].client_ep); sprintf(tmp, "0x%x", infos[idx].cid); m_StateList.AddItem(idx, 3, tmp); } strcpy(m_szAddress, szAddress); char szTmp[500]; if(count) { sprintf(szTmp, "%s : %d state found", szAddress, count); } else { sprintf(szTmp, "%s : state not found", szAddress); } ::SetWindowText(GetDlgItem(IDC_TEXTBAR), szTmp); return 0; }
unsigned int ZION_CALLBACK TcpThreadFunc(void * point) { char *p = (char*)point; SOCK_HANDLE handle; SOCK_ADDR sock_addr; char read_buf[1024]; sock_init(); if(sock_str2addr(p, &sock_addr)==NULL) { printf("tcp sock_str2addr function error\n"); goto FINISH_STATE; } handle = sock_bind(&sock_addr, 0); if(handle == SOCK_INVALID_HANDLE) { printf("tcp bind function error\n"); goto ERROR_STATE; } printf("tcp %s wait for client connect....\n", p); handle = sock_accept(handle, NULL); if(handle == SOCK_INVALID_HANDLE) { printf("tcp socket_accept function error\n"); goto ERROR_STATE; } printf("tcp client connect access\n"); while(1) { memset(read_buf, 0, sizeof(read_buf)); //sock_readbuf(handle, (void*)read_buf, sizeof(read_buf)); sock_read(handle, (void*)read_buf, sizeof(read_buf)); printf("tcp client send '%s'\n", read_buf); sock_write(handle, (void*)read_buf, (int)strlen(read_buf)); } ERROR_STATE: sock_unbind(handle); FINISH_STATE: sock_final(); return 0; }
unsigned int ZION_CALLBACK UdpThreadFunc(void * point) { char *p = (char*)point; SOCK_HANDLE handle; SOCK_ADDR sock_addr; char read_buf[1024]; int ret = ERR_NOERROR; sock_init(); if(sock_str2addr(p, &sock_addr) == NULL) { printf("udp sock_str2addr function error\n"); goto FINISH_STATE; } handle = sock_dgram_bind(&sock_addr, 0); if(handle == SOCK_INVALID_HANDLE) { printf("udp bind function error\n"); goto ERROR_STATE; } if(ret != ERR_NOERROR) { printf("udp sock_wait function error\n"); goto ERROR_STATE; } sock_dgram_send(handle, &sock_addr, "12345",5); while(1) { memset(read_buf, 0, sizeof(read_buf)); //sock_readbuf(handle, (void*)read_buf, sizeof(read_buf)); sock_dgram_recv(handle, &sock_addr, read_buf, sizeof(read_buf)); printf("udp client send '%s'\n", read_buf); sock_dgram_send(handle, &sock_addr, read_buf, sizeof(read_buf)); } ERROR_STATE: sock_dgram_unbind(handle); FINISH_STATE: sock_final(); return 0; }
int csmng_init() { sock_init(); fdwatch_init(); if(!sock_str2addr(appbox_args_get("listen", "0.0.0.0:1980"), &listen_ep)) return ERR_INVALID_PARAMETER; strcpy(mapfile, appbox_args_get("map", "csmng.map")); strcpy(histroyfile, appbox_args_get("histroy", "file://[email protected]")); console_log = log_open(histroyfile); if(console_log==NULL) { printf("can't open histroy file"); } return ERR_NOERROR; }
void CServerApp::SetRPCAddrPort(const _STR str) { sock_str2addr(str, &m_saRPC); }
void CServerApp::SetListenAddrPort(const _STR str) { sock_str2addr(str, &m_saListen); }
void CServerApp::SetClusterRpcEP(const _STR str) { sock_str2addr(str, &m_saCluster); }