基于MFC的网络编程(远程桌面监控)学习笔记(六)程序的整体架构

在编写整个系统过程中参考了无数csdn的文章,我,,,,找不过来,如有侵权联系我我设私密就好,这个是我自己学习用的谢谢各位csdn的大佬。。。

额,,,话不多说,直接上图吧!

这就是整个系统的整体架构思想。

这里小小提一下几个思路的闪光点:

1.利用树形or列表控件将树可以通过强转的方式存入控件当中。用一个new 开辟存放的方式实现多个关联存储

具体的看我的accept代码:

	SOCKET *ClientSocket = new SOCKET;		//这里使用地址来存的原因就是要不断开辟新的来存;

		SOCKADDR_IN addr_conn;
		memset(&addr_conn, 0, sizeof(addr_conn));
		*ClientSocket = accept(sockListen, (SOCKADDR *)&addr_conn, 0);//就是相当于原来的开辟空间来存放
		if (*ClientSocket > 0)
		{
			AfxMessageBox(L"有客户端接入yyj控制系统");
			//获得接入socket的IP地址
			int nSize = sizeof(SOCKADDR_IN);
			memset((void *)&addr_conn, 0, sizeof(addr_conn));//设置接受的参数
																		//错误案例:getpeername(sockListen, (SOCKADDR *)&addr_conn, &nSize);
			getpeername(*ClientSocket, (SOCKADDR *)&addr_conn, &nSize);//这里接一个重点,你的第一个参数得是你存进来的SOCket啊!
			char szPeerAddress[16] = {0};
			memset((void *)szPeerAddress, 0, sizeof(szPeerAddress));
			CString strIPAddress(inet_ntoa(addr_conn.sin_addr));




			HTREEITEM hRootItem = pdlg->m_clientlist.GetRootItem();//为了得到根我们是将其IP地址添加到根服务器列表
													//底下才能区分
			HTREEITEM  hItem = pdlg->m_clientlist.InsertItem(strIPAddress, hRootItem);//将得到的IP地址插入根的底下
			//将套接字的所在房间的门牌号存入树开辟的记事本当中
			pdlg->m_clientlist.SetItemData(hItem, (DWORD)ClientSocket);
		}
		else AfxMessageBox(L"failure!!!");
		//delete ClientSocket;这里可千万千万要注意啊你这不能释放啊你这释放了,,还存个啥劲啊本身就存个门牌号,,,你把里面的人放走了,,,
	}

2使用主对话框内的数据

可以利用一个指向主对话框类的指针来完成主对话框数据的取用。

CRemoteserviceDlg *pmainDLG;//一个可以调用主对话框数据的主对话框指针
							//这里必须注意既然是指针就一定要初始化
							//主对话框的指针当然是再构造函数里面指向自己this(错)
							//上一句有问题,因为这里是全局变量又不是成员变量怎么能在构造函数里初始化呢?
							//所以初始化应当再初始化对话框函数init里面
//当然你得去initial函数里面初始化

3.开辟两个相关联的socket用来存放整个数据,实现视频传输的过程中还能够实现实时操作,

这个就靠大家自己去实现了,我实现的方法有点小问题hhh

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值