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;
	}
Example #2
0
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;
}
Example #3
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;
}
Example #4
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;
}
Example #5
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;
}
Example #6
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;
}
Example #7
0
	void CServerApp::SetRPCAddrPort(const _STR str)
	{
		sock_str2addr(str, &m_saRPC);
	}
Example #8
0
	void CServerApp::SetListenAddrPort(const _STR str)
	{
		sock_str2addr(str, &m_saListen);
	}
Example #9
0
	void CServerApp::SetClusterRpcEP(const _STR str)
	{
		sock_str2addr(str, &m_saCluster);
	}