TCP文件传输MFC客户端

在VS2015下实现的TCP文件传输,界面如下:


连接服务器button功能:

1:加载socket库

2.创建套接字

3:连接服务器

button消息响应如下:

void CFileClientDlg::OnConnect()
{
	// TODO: Add your control notification handler code here
	WORD ver = MAKEWORD(2, 0);
	WSADATA wsadata;
	if (WSAStartup(ver, &wsadata))
	{
		MessageBox(_T("load winsock dll failing"), _T("load"));
		return;
	}
	//create socket
	socket_client = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (INVALID_SOCKET == socket_client)
	{
		MessageBox(_T("create socket failing"), _T("create"));
		return;
	}
	//connet server
	sockaddr_in addr;
	memset(&addr, 0, sizeof(sockaddr_in));
	addr.sin_family = AF_INET;
	addr.sin_port = htons(10000);
	addr.sin_addr.S_un.S_addr = inet_addr("10.0.210.99");
	if (connect(socket_client, (sockaddr*)&addr, sizeof(sockaddr)))
	{
		MessageBox(_T("connect server failed"), _T("connect"));
		return;
	}

	/*m_sock.Create();
	if (!m_sock.Connect(_T("10.0.210.99"), 10000))
	{
		MessageBox(_T("connect failed"), _T("connect"));
		EndDialog(IDCANCEL);
		return;
	}*/
//	socket_client = m_sock.m_hSocket;

//	Sleep(1);
	GetDlgItem(IDC_CONNECT)->EnableWindow(false);
//	MessageBox(_T("successful open"));
}
连接服务器后,此按钮不可用;
class CFileClientDlg : public CDialogEx
{
// Construction
public:
	CFileClientDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_FILECLIENT_DIALOG };
#endif

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support


// Implementation
protected:
	HICON m_hIcon;
	SOCKET socket_client;
	CSocket m_sock;
dlg头文件加两个成员变量socket socket_client以及CSocket m_sock;

发送文件button消息响应实习如下:

void CFileClientDlg::OnSendfile()
{
	// TODO: Add your control notification handler code here
	//open file
	CFileDialog send_dlg(TRUE);
	if (IDOK == send_dlg.DoModal())
	{
		//get route
		CString path_name = send_dlg.GetPathName();
		//create file
		CFile file_context(path_name, CFile::modeRead);
		char context[256]{ 0 };
		//send file
		while (file_context.Read(context, 256))
		{
			//send context
			if (SOCKET_ERROR == send(socket_client, context, 256, NULL))
			{
				MessageBox(_T("send failed"), _T("send"));
				return;
			}
			memset(context, 0, 256);
		}

		//close file
		file_context.Close();
		MessageBox(_T("send successful"), _T("send"));
	}
}
接收文件button消息响应如下:

void CFileClientDlg::OnRecvfile()
{
	// TODO: Add your control notification handler code here
	CFileDialog recv_dlg(false);
	if (IDOK == recv_dlg.DoModal())
	{
		CString file_path = recv_dlg.GetPathName();
		//
		CFile file_recv(file_path, CFile::modeCreate | CFile::modeWrite);
		//receive content
		if (socket_client)
		{
			char recv_context[256] = { 0 };
			while (recv(socket_client, recv_context, 255, NULL))
			{
				//fill content
				file_recv.Write(recv_context, strlen(recv_context));
				if (strlen(recv_context) < 255)
				{
					break;
				}
			}
		}
		//close file
		file_recv.Close();
		MessageBox(_T("receive successful"), _T("receive"));
	}
}
退出button消息响应如下:

void CFileClientDlg::OnBnClickedCancel()
{
	// TODO: Add your control notification handler code here
	closesocket(socket_client);
	WSACleanup();
	CDialogEx::OnCancel();
}
在此,这些还涉及到了文件操作。

文件创建的过程中包含了winsock

编译过程中可能遇到一个问题,响应解决办法:http://blog.csdn.net/thecentry/article/details/78955431

源代码的地址为:http://download.csdn.net/download/thecentry/10188769




### 回答1: VS TCP客户端MFC是指使用Visual Studio编程环境开发的TCP客户端,其中MFC是Microsoft Foundation Class的简称,是微软公司开发的一套C++类库。TCP是一个网络协议,用于在不同计算机上的应用程序之间进行可靠的数据传输。 在使用VS TCP客户端MFC时,开发者可以利用MFC提供的丰富的类库和功能来编写TCP客户端程序。MFC提供了包括Socket类、CAsyncSocket类等在内的一系列类来处理与TCP相关的功能,简化了开发者的工作。 通过VS TCP客户端MFC,我们可以实现与远程服务器之间的通信。首先,我们需要建立一个与服务器的TCP连接,可以使用Socket类中的Connect函数来实现。连接建立后,我们可以使用Send函数向服务器发送数据,使用Receive函数接收来自服务器的数据。与此同时,通过使用MFC提供的UI类,我们可以将接收到的数据以有意义的方式显示给用户,提高用户体验。 另外,由于TCP是一种可靠的协议,所以通过MFC开发的TCP客户端可以确保数据的准确传输,保证了数据的完整性。 总之,通过VS TCP客户端MFC,我们可以轻松地开发出功能强大、稳定可靠的TCP客户端程序。它为开发者提供了丰富的类库和功能,使得开发过程更加高效便捷。同时,它也为用户提供了良好的用户体验,确保了数据的可靠传输。 ### 回答2: VS(Visual Studio)是微软公司开发的一款集成开发环境(IDE),可用于开发各种软件应用程序。TCP(Transmission Control Protocol)是一种面向连接的传输协议,用于在网络中传输数据。 MFC(Microsoft Foundation Class)是VS中的一种编程框架,用于快速开发Windows桌面应用程序。通过使用MFC,开发者可以在VS中轻松创建用户界面、处理事件、操作文件等。 在VS中使用TCP客户端,可以通过MFC编写代码来实现与服务器的通信。例如,可以使用MFC提供的网络类(如CSocket)来创建TCP连接、发送和接收数据。 使用MFC编写TCP客户端的主要步骤包括以下几个方面: 1. 创建MFC工程:在VS中创建一个MFC应用程序工程,选择适当的应用程序类型。 2. 添加TCP客户端代码:打开VS的代码编辑器,打开mainFrame.cpp或其他相关文件,在其中添加与TCP客户端相关的代码。例如,可以使用CSocket类创建套接字,连接服务器,发送和接收数据。 3. 设置IP地址和端口:在代码中指定要连接的服务器的IP地址和端口号。可以通过用户界面(如对话框)或配置文件来动态获取这些值。 4. 处理接收到的数据:在代码中实现处理从服务器接收到的数据的逻辑。可以根据业务需求解析数据,并在用户界面中显示或进行其他操作。 5. 错误处理和异常处理:在代码中添加适当的错误处理和异常处理逻辑,以确保TCP客户端的稳定性和可靠性。例如,可以检测网络连接错误,处理连接超时等情况。 总而言之,通过使用VS的MFC框架,可以方便地开发TCP客户端应用程序。开发者可以利用MFC提供的丰富功能和易于使用的API,快速地实现与服务器的通信,并处理接收到的数据。 ### 回答3: VS(Visual Studio)是微软推出的集成开发环境(IDE),用于开发各种应用程序。TCP(传输控制协议)是一种网络协议,用于在网络上的不同主机之间进行可靠数据传输。 MFC(Microsoft Foundation Classes)是VS中的一个框架,用于开发Windows平台上的应用程序。通过MFC,开发者可以通过可视化设计界面来实现应用程序的功能。MFC提供了许多类和方法,用于处理用户界面、文件操作、数据库连接等。 在开发TCP客户端时,可以使用MFC来简化开发过程。首先,可以使用MFC提供的socket类来建立和管理与服务器的连接。通过socket类的方法,可以实现连接到指定的服务器,并发送和接收数据。 其次,MFC还提供了一些类和方法,用于处理数据的序列化和反序列化。在TCP通信中,数据通常需要以特定的格式进行传输,并在客户端和服务器之间进行解析。MFC中的这些类和方法可以帮助开发者将数据序列化为特定格式,并在接收端进行反序列化。 此外,MFC还提供了用于创建用户界面的类和方法。可以使用MFC的窗口类来创建应用程序的主窗口,并在其中添加按钮、文本框等控件。通过MFC的消息映射机制,可以处理用户的操作,并在必要时与服务器进行通信。 总之,VS中的MFC可以帮助开发者更方便地开发TCP客户端应用程序。通过MFC提供的类和方法,可以简化与服务器的连接和数据传输,并实现一个用户友好的界面。这样,开发者可以更专注于应用程序的核心功能,提高开发效率。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值