VC远控(一)界面设计及套接字连接测试
首先创建一个MFC项目。
选择基于对话框:
勾选Windows套接字
依次拉上各种不同的控件:
Edit Control、Button、Tree、Static Text、List、Progress Control
运行的结果如下图所示:
在代码中设定Ip的初始值
GetDlgItem(IDC_EDIT_ADDR)->SetWindowText("127.0.0.1");
如果连接成功,在下方的tree中会显示远程主机的图片,通过以下代码来完成。
m_ImageList_Tree.Create(, , ILC_COLOR16, , );
HICON hIcon = NULL; hIcon = (HICON) LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON_HOST), IMAGE_ICON, ,, NULL);
m_ImageList_Tree.Add(hIcon);
m_tree.SetImageList(&m_ImageList_Tree, TVSIL_NORMAL);
m_tree.InsertItem("Remote Host", , , , );
第一行:前两个24表示图标的大小,长和宽。20表示初始时可以容纳的图标的个数,40表示最大的个数。 |
m_tree这个成员变量需要手动添加,具体步骤如下:
打开类向导,选择窗体的类名,选择成员变量。点击添加成员变量,变量名改为m_tree
下面来编写connect按钮的部分功能及对socket套接字的测试
首先需要定义三个相关的成员变量:
WSADATA wsadata;
SOCKET server;
SOCKADDR_IN server_addr;
在OnInitDialog()中海需要添加以下代码
//对Windows 套接字进行初始化
WORD ver = MAKEWORD(, ); //2.2版本(MAKEWORD(1,2)//2.1版本)
WSAStartup(ver, &wsadata);
双击connect按钮,添加鼠标点击事件
void CRemoteClientDlg::OnBnClickedButtonOk()
{
// TODO: 在此添加控件通知处理程序代码 //创建套接字
UpdateData(true); if (m_addr.IsEmpty())
{
GetDlgItem(IDC_STATIC)->SetWindowText("IP address is empty");
MessageBox("IP address is empty !");
GetDlgItem(IDC_STATIC)->SetWindowText("No Connection");
} server = socket(AF_INET, SOCK_STREAM, );//0表示使用TCP、UDP协议 server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port);
server_addr.sin_addr.S_un.S_addr = inet_addr(m_addr.LockBuffer()); //在指定的套接字上进行连接
if(connect(server, (SOCKADDR*)&server_addr,sizeof(server_addr)) != )
{
GetDlgItem(IDC_STATIC)->SetWindowText("Connect Failed ");
MessageBox("Connect Failed !");
GetDlgItem(IDC_STATIC)->SetWindowText("No Connection"); return;
}
}
第一个if语句用来判断ip输入框是否为空
第二个if语句用来判断是否连接成功,如果连接失败就会返回一个非零的值。
由于server端还没有写,所以说,肯定是连接失败的。
VC远控(一)界面设计及套接字连接测试的更多相关文章
- VC++学习之网络编程中的套接字
VC++学习之网络编程中的套接字 套接字,简单的说就是通信双方的一种约定,用套接字中的相关函数来完成通信过程.应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问 ...
- [转]如何借助 TLS/SSL 确保套接字连接的安全(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用)
本文转自:http://msdn.microsoft.com/zh-cn/library/windows/apps/jj150597.aspx 本主题将展示在使用 StreamSocket 功能时,如 ...
- VMware无法连接MKS:套接字连接尝试次数太多解决
粘贴自:https://jingyan.baidu.com/article/425e69e61eb578be15fc16ae.html VMware在开启虚拟机的时候,突然弹出[无法连接MKS:套接字 ...
- WCF 套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的
一个项目需要用到推送的功能,就是服务器主动推送数据给多台客户机.于是采用了WCF的双工通讯netTcpBinding 写好的项目,在本机测试都没有问题. 如果放在局域网内测试,问题出来了:先是安全性问 ...
- Linux/UNIX套接字连接
套接字连接 套接字是一种通信机子.凭借这样的机制.客户/server系统的开发工作既能够在本地单机上进行.也能够夸网络进行. 套接字的创建和使用与管道是有差别的.由于套接字明白地将客户和server区 ...
- fsockopen — 打开一个网络连接或者一个Unix套接字连接
fsockopen (PHP 4, PHP 5, PHP 7) 说明 resource fsockopen ( string $hostname [, int $port = -1 [, int &a ...
- 解决VMware虚拟机报错“无法连接MKS:套接字连接尝试次数太多,正在放弃”
1.错误描述 在VMware中打开虚拟机时报错: "无法连接MKS:套接字连接尝试次数太多,正在放弃" 物理机操作系统: Windows 7 虚拟机操作系统: Kali Linux ...
- Linux:【解决】无法连接 MKS:套接字连接尝试次数太多正在放弃
[解决]无法连接 MKS:套接字连接尝试次数太多正在放弃 操作: 我的电脑 -> 右键 -> 管理 -> 服务和应用程序 -> 服务: 开启下面的服务: 服务启动成功后,重 ...
- PHP Socket(套接字连接)扩展简介和使用方法
PHP socket扩展是基于流行的BSD sockets,实现了和socket通讯功能的底层接口,它可以和客户端一样当做一个socket服务器. 使用这些函数时请注意,虽然他们中有很多和C函数同名的 ...
随机推荐
- Eclipse中使用正则表达式搜索替换
Eclipse中使用正则表达式搜索替换 分类:software | 标签: 正则表达 替换 eclipse 2011-11-29 11:28 阅读(1930)评论(0)编辑删除 最近在eclip ...
- Spring boot 整合jsp和tiles模板
首先贴上我的pox.xml文件,有详细的支持注释说明 <?xml version="1.0" encoding="UTF-8"?> <proj ...
- java读取某个文件夹下的所有文件
import java.io.FileNotFoundException;import java.io.IOException;import java.io.File; public class Re ...
- 可视化MNIST之降维探索Visualizing MNIST: An Exploration of Dimensionality Reduction
At some fundamental level, no one understands machine learning. It isn’t a matter of things being to ...
- 测试 float
关于blog上对 float的许多讨论,这个函数不对,那个运算出错. 其实原因不在这里,根源是计算机没有向你保证你看到的就是真实的,都是一厢情愿而已. 废话不说.下面是测试,一看就明白.再不明白的看看 ...
- 用Spring Data JPA 基于内存存储pojo的简单案例
poject结构如下: Customer.java类是一个pojo类,代码如下: package hello; import javax.persistence.Entity; import java ...
- VIM下CS命令
01) :vs 文件目录//打开新的目录02) :cs f s 函数名 //查找那些文件中都用这个函数/变量03) :vert diffsplit A函数 //当前函数与A函数做对比(在对比情况下 ...
- hdu - 1010 Tempter of the Bone (dfs+奇偶性剪枝) && hdu-1015 Safecracker(简单搜索)
http://acm.hdu.edu.cn/showproblem.php?pid=1010 这题就是问能不能在t时刻走到门口,不能用bfs的原因大概是可能不一定是最短路路径吧. 但是这题要过除了细心 ...
- supersocket中quickstart文件夹下的MultipleCommandAssembly的配置文件分析
首先确认下配置文件中的内容 第一部分configSections[需要注意的是name=superSocket] <configSections> <section name=&qu ...
- 宏ut_mem_block_t
/** This struct is placed first in every allocated memory block */ typedef struct ut_mem_block_struc ...