当前位置: 首页 > news >正文

怎么做公司网站竞价/网络推广代理怎么做

怎么做公司网站竞价,网络推广代理怎么做,自己建设网站难不难,如何在雅虎台湾做企业网站功能:CS 模式文件上传、下载服务器 客户端(轻量级的个人云盘系统) 使用方法: 保证文件夹路径E:\myLibForYunPan\data和E:\myLibForYunPan\download存在,分别用来存放上传和下载的文件。 打开服务器和客户端程序WffosSocketClient.exe和Wffos…

功能:CS 模式文件上传、下载服务器 + 客户端(轻量级的个人云盘系统)

使用方法:

保证文件夹路径E:\myLibForYunPan\data和E:\myLibForYunPan\download存在,分别用来存放上传和下载的文件。

打开服务器和客户端程序WffosSocketClient.exe和WffosSocketSever.exe

WffosSocketClient.exe界面内输入服务器地址,点击连接,可以上传、下载文件,并显示发送相关消息。

WffosSocketSever.exe界面内点击删除,可以删除文件,并显示发送相关消息。

由于博客不知道怎么上传压缩文件,所以本博客没有对应.exe,相关文件稍后上传百度网盘。(http://pan.baidu.com/s/1nuGmCg5)

以下为客户端和服务器端代码:

// WffosSocketClientDlg.cpp : 实现文件
//
#include "stdafx.h"#include<iostream>
#include<fstream>
#include<string>
using namespace std;#include "WffosSocketClient.h"
#include "WffosSocketClientDlg.h"
#include "afxdialogex.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx
{
public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持// 实现
protected:DECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()// CWffosSocketClientDlg 对话框
CWffosSocketClientDlg::CWffosSocketClientDlg(CWnd* pParent /*=NULL*/): CDialogEx(CWffosSocketClientDlg::IDD, pParent)
{m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}void CWffosSocketClientDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);//upLoadHis------------------------------/*:CWffosSocketClientDlg.hCButton    m_connect;CButton    m_disconnect;CButton    m_upLoad;CEdit    m_severIP;CEdit    m_talk;CListCtrl    m_talkList;*/DDX_Control(pDX, IDC_BUTTON1, m_connect);DDX_Control(pDX, IDC_BUTTON3, m_disconnect);DDX_Control(pDX, IDC_BUTTON2, m_upLoad);DDX_Control(pDX, IDC_BUTTON4, m_downLoad);DDX_Control(pDX, IDC_EDIT2, m_severIP);DDX_Control(pDX, IDC_EDIT3, m_talk);DDX_Control(pDX, IDC_EDIT1, m_talkD);DDX_Control(pDX, IDC_LIST1, m_talkList);DDX_Control(pDX, IDC_LIST2, m_talkListD);//e------------------------------
}BEGIN_MESSAGE_MAP(CWffosSocketClientDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()//s--------------------changedON_BN_CLICKED(IDC_BUTTON1, &CWffosSocketClientDlg::OnBnClickedConnect)ON_BN_CLICKED(IDC_BUTTON3, &CWffosSocketClientDlg::OnBnClickedDisconnect)ON_BN_CLICKED(IDC_BUTTON2, &CWffosSocketClientDlg::OnBnClickedUpLoad)ON_BN_CLICKED(IDC_BUTTON4, &CWffosSocketClientDlg::OnBnClickedDownLoad)//e-----------------------------
END_MESSAGE_MAP()// CWffosSocketClientDlg 消息处理程序

BOOL CWffosSocketClientDlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);            // 设置大图标SetIcon(m_hIcon, FALSE);        // 设置小图标// TODO:  在此添加额外的初始化代码//s------------------------------------------------------m_talk.SetLimitText(1024);m_talkD.SetLimitText(1024);m_talkD.SetWindowTextA("");//初始化下载输入框m_talkList.InsertColumn(0, "上传和下载信息");m_talkListD.InsertColumn(0, "可下载列表");m_talkList.SetColumnWidth(0, 435);m_talkListD.SetColumnWidth(0, 435);m_upLoad.EnableWindow(FALSE);m_downLoad.EnableWindow(FALSE);m_disconnect.EnableWindow(FALSE);m_severIP.SetWindowTextA("127.0.0.1");count = 0;//e-------------------------------------------------------return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}void CWffosSocketClientDlg::OnSysCommand(UINT nID, LPARAM lParam)
{if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}
}// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。void CWffosSocketClientDlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标
        dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}
}//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CWffosSocketClientDlg::OnQueryDragIcon()
{return static_cast<HCURSOR>(m_hIcon);
}//连接------------nameChanged
void CWffosSocketClientDlg::OnBnClickedConnect()
{// TODO:  在此添加控件通知处理程序代码/*:CWffosSocketClientDlg.hSOCKET clientSocket;sockaddr_in cliAdd;int count, cliFlag;*/m_talkD.SetWindowTextA("");//初始化下载输入框char ipAddr[35];m_severIP.GetWindowTextA(ipAddr, 30);//项目->常规->使用多字符集//以下三行确定套接字cliAdd.sin_addr.s_addr = inet_addr(ipAddr);//_WINSOCK_DEPRECATED_NO_WARNINGScliAdd.sin_family = AF_INET;cliAdd.sin_port = 5000;//创建套接字clientSocket = socket(AF_INET, SOCK_STREAM, 0);//三种套接字,SOCK_STREAM对应TCP/IPcliFlag = 1;//表示客户端准备完毕//启动线程AfxBeginThread(thread, 0);
}//断开------------nameChanged
void CWffosSocketClientDlg::OnBnClickedDisconnect()
{// TODO:  在此添加控件通知处理程序代码cliFlag = 0;closesocket(clientSocket);
}//上传-----------nameChanged
void CWffosSocketClientDlg::OnBnClickedUpLoad()
{// TODO:  在此添加控件通知处理程序代码char buff[1024];CSize size;size.cx = 0;size.cy = 30;m_talk.GetWindowTextA(buff, 1024);//获取输入的文件路径存于srcstring src = buff;ifstream in(src, ifstream::in);if (!in){m_talkList.InsertItem(count++, "上传不成功,无法打开输入文件");return;}for (unsigned int i = 0; i < src.size(); i++){if ('\\' == src[i])src[i] = '/';}string src1;src1.push_back(src[0]);for (unsigned int i = 1; i < src.size(); i++){if ('/' == src[i]){if ('/' != src[i - 1])src1.push_back(src[i]);}}unsigned int j = 0;for (unsigned int i = 0; i < src.size(); i++){if ('/' == src[i])j = i > j ? i : j;}string fName = src;fName.erase(0, j + 1);//去掉路径,保留文件名src = src1 + fName;send(clientSocket, ("#upld#" + src).c_str(), 1024, 0);//发送上传文件名//下面代码逐行上传string fLine;while (getline(in, fLine)){send(clientSocket, fLine.c_str(), 1024, 0);}send(clientSocket, "", 1024, 0);in.close();//必须有这一步
}//下载-----------nameChanged
void CWffosSocketClientDlg::OnBnClickedDownLoad()
{// TODO:  在此添加控件通知处理程序代码char buff[1024];CSize size;size.cx = 0;size.cy = 30;m_talkD.GetWindowTextA(buff, 1024);//获取输入的文件路径存于srcstring src = buff;src = "E:/myLibForYunPan/data/" + src;send(clientSocket, ("#dnld#" + src).c_str(), 1024, 0);//发送下载文件名
}//接收数据线程:
//当用户单击“连接”按钮以后
//程序进行相关设定
//最后调用了"AfxBeginThread(thread, 0);"启动了该线程
UINT thread(LPVOID v)
{char buff[1024];char array[25][30] ={ "155.245.160.151","155.245.160.152","155.245.160.153","155.245.160.154","155.245.160.155","155.245.160.156","155.245.160.157","155.245.160.158","155.245.160.159","155.245.160.160","155.245.160.161","155.245.160.162","155.245.160.163","155.245.160.164","155.245.160.165","155.245.160.166","155.245.160.167","155.245.160.168","155.245.160.169","155.245.160.170","155.245.160.171","155.245.160.172","155.245.160.173","155.245.160.174","155.245.160.175" };// 定义数组用来存放一些IP地址
    CSize size;size.cx = 0;size.cy = 30;int socSta = 1, addcount = 0;CWffosSocketClientDlg *dlg = (CWffosSocketClientDlg*)AfxGetApp()->GetMainWnd();//获得当前运行对话dlg->m_connect.EnableWindow(FALSE);dlg->m_disconnect.EnableWindow(TRUE);//连接到服务器while (connect(dlg->clientSocket, (sockaddr*)&(dlg->cliAdd), sizeof(dlg->cliAdd)) && dlg->cliFlag != 0){dlg->m_talk.SetWindowText("等待.....");//空循环for (int i = 0; i <= 65000; i++)for (int j = 0; j <= 200; j++);if (addcount == 25)addcount = 0;dlg->cliAdd.sin_addr.s_addr = inet_addr(array[addcount++]);}if (dlg->cliFlag == 1)//连接成功,则提示并允许上传下载
    {dlg->m_talkList.InsertItem(dlg->count++, "连接成功");dlg->m_upLoad.EnableWindow(TRUE);//允许上传数据dlg->m_downLoad.EnableWindow(TRUE);//允许下载数据dlg->m_talkListD.DeleteAllItems();dlg->SetForegroundWindow();}//连接建好以后,循环获得数据并显示while (socSta != SOCKET_ERROR && dlg->cliFlag != 0){socSta = recv(dlg->clientSocket, buff, 1024, 0);//调用recv函数接收数据dlg->SetForegroundWindow();if (socSta != SOCKET_ERROR && dlg->cliFlag != 0){string src = buff;string srcBegin = { buff[0], buff[1], buff[2], buff[3], buff[4], buff[5] };if ("#talk#" == srcBegin)//聊天消息
            {src.erase(0, 6);//去掉标记dlg->m_talkList.InsertItem(dlg->count++, src.c_str());dlg->m_talkList.Scroll(size);// Forces the control to scroll its client area by the specified amount.            
            }if ("#okdl#" == srcBegin)//可下载文件名显示
            {src.erase(0, 6);//去掉标记dlg->m_talkListD.InsertItem(dlg->count++, src.c_str());}if ("#dnld#" == srcBegin){src.erase(0, 6);//去掉标记unsigned int j = 0;for (unsigned int i = 0; i < src.size(); i++){if ('/' == src[i])j = i > j ? i : j;}string fName = src;fName.erase(0, j + 1);//去掉路径,保留文件名string dest = "E:/myLibForYunPan/download/" + fName;//目的文件路径记为destofstream toDest(dest, ofstream::out);//先打开一次,没有就创建,有就清除内容
                toDest.close();string msg = src + "下载到E:/myLibForYunPan/download/" + fName;ofstream downLoadSrcToDestHis("E:/myLibForYunPan/downLoadSrcToDestHis.txt", ofstream::app);downLoadSrcToDestHis << msg << endl;//写入上传源和目的信息到"E:/myLibForYunPan/downLoadSrcToDestHis.txt"dlg->m_talkList.InsertItem(dlg->count++, msg.c_str());}if (("#talk#" != srcBegin) && ("#okdl#" != srcBegin) && ("#dnld#" != srcBegin)){string dest = "E:/myLibForYunPan/download/";char fName[1024];dlg->m_talkD.GetWindowTextA(fName, 1024);dest = dest + fName;ofstream toDest(dest, ofstream::app);toDest << src << endl;//下面代码复制传过来的src信息到dest
                toDest.close();}}    }//非上述情况,则发送断开命令并终止线程send(dlg->clientSocket, "Disconnected", 1024, 0);dlg->m_upLoad.EnableWindow(FALSE);dlg->m_downLoad.EnableWindow(FALSE);dlg->m_connect.EnableWindow(TRUE);dlg->m_disconnect.EnableWindow(FALSE);closesocket(dlg->clientSocket);AfxEndThread(0);//终止该线程return 0;
}
View Code
// WffosSocketSeverDlg.cpp : 实现文件
//

#include "stdafx.h"#include<iostream>
#include<fstream>
#include<string>
#include<Windows.h>
#include<stdio.h>
using namespace std;#include "WffosSocketSever.h"
#include "WffosSocketSeverDlg.h"
#include "afxdialogex.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx
{
public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持// 实现
protected:DECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()// CWffosSocketSeverDlg 对话框
CWffosSocketSeverDlg::CWffosSocketSeverDlg(CWnd* pParent /*=NULL*/): CDialogEx(CWffosSocketSeverDlg::IDD, pParent)
{m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}void CWffosSocketSeverDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);//s-------------------------------------/*:CWffosSocketSeverDlg.hCButton    m_delete;CListCtrl    m_talkList;CEdit    m_talk;*/DDX_Control(pDX, IDC_BUTTON2, m_delete);DDX_Control(pDX, IDC_EDIT1, m_talk);DDX_Control(pDX, IDC_LIST1, m_talkList);DDX_Control(pDX, IDC_LIST2, m_talkListD);
}BEGIN_MESSAGE_MAP(CWffosSocketSeverDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON2, &CWffosSocketSeverDlg::OnBnClickedDelete)
END_MESSAGE_MAP()// CWffosSocketSeverDlg 消息处理程序

BOOL CWffosSocketSeverDlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);            // 设置大图标SetIcon(m_hIcon, FALSE);        // 设置小图标// TODO:  在此添加额外的初始化代码//s-----------------------------------------------count = 0;m_talkList.InsertColumn(0, "上传下载消息");m_talkList.SetColumnWidth(0, 435);m_talkListD.InsertColumn(0, "已上传列表");m_talkListD.SetColumnWidth(0, 435);m_talk.SetLimitText(1024);for (int i = 0; i<50; i++)msgsock[i] = NULL;//设定地址servAdd.sin_addr.s_addr = htonl(INADDR_ANY);servAdd.sin_family = AF_INET;servAdd.sin_port = 5000;//htons(5000);addlen = sizeof(servAdd);m_delete.EnableWindow(TRUE);//创建socketsock = socket(AF_INET, SOCK_STREAM, 0);//绑定if (bind(sock, (sockaddr*)&servAdd, addlen)){m_talk.SetWindowTextA("绑定错误");}else{//m_talkList.InsertItem(count++,inet_ntoa(servAdd.sin_addr));m_talk.SetWindowTextA("");//开始侦听    listen(sock, 5);//调用线程AfxBeginThread(&thread, 0);}talkListDRefsh();//e--------------------------------------------------return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}void CWffosSocketSeverDlg::OnSysCommand(UINT nID, LPARAM lParam)
{if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}
}// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。void CWffosSocketSeverDlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文
SendMessageA(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标
        dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}
}//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CWffosSocketSeverDlg::OnQueryDragIcon()
{return static_cast<HCURSOR>(m_hIcon);
}//删除
void CWffosSocketSeverDlg::OnBnClickedDelete()
{// TODO:  在此添加控件通知处理程序代码char buff[1024];CSize size;size.cx = 0;size.cy = 30;m_talk.GetWindowTextA(buff, 1024);//获取输入的文件路径存于buffstring src = buff;src = "E:/myLibForYunPan/data/" + src;ifstream in(src);if (!in){m_talkList.InsertItem(count++, "删除不成功,无法打开该文件");return;}in.close();//必须有这一步,不关闭无法删除if (DeleteFileA(src.c_str())){string BKFName = "BKupLoadDestHis.txt";BKFName = "E:/myLibForYunPan/" + BKFName;//备份文件路径BKFNamestring upLoadDestHisList;ifstream upLoadDestHis("E:/myLibForYunPan/upLoadDestHis.txt", ifstream::in);while (getline(upLoadDestHis, upLoadDestHisList)){string WriteBKFLine;ofstream WriteBKF(BKFName, ifstream::app);//新建备份文件if (upLoadDestHisList != src){WriteBKF << upLoadDestHisList << endl;//写备份文件
            }WriteBKF.close();}upLoadDestHis.close();string ReadBKFLine;ifstream ReadBKF(BKFName, ifstream::in);string WriteupLoadDestHisLine;ofstream WriteupLoadDestHis("E:/myLibForYunPan/upLoadDestHis.txt", ofstream::out);m_talkList.InsertItem(count++, src.c_str());while (getline(ReadBKF, ReadBKFLine)){WriteupLoadDestHis << ReadBKFLine << endl;//备份拷贝到原文件
        }WriteupLoadDestHis.close();ReadBKF.close();DeleteFileA(BKFName.c_str());//删除备份文件const string END = "已删除";string msg = src + END;m_talkList.InsertItem(count++, msg.c_str());//循环向所有客户发送信息for (int i = 0; i<50; i++){if (msgsock[i] != NULL)send(msgsock[i], ("#talk#" + msg).c_str(), 1024, 0);}talkListDRefsh();//有删除,刷新可删除列表
    }elsem_talkList.InsertItem(count++, "删除不成功");
}string dest;
bool upLoadFlag = TRUE;
bool downLoadFlag = TRUE;const string TALK = "#talk#";//对话消息用"#talk#"标记
const string UPLD = "#upld#";//上传文件路径用"#upld#"标记
const string DNLD = "#dnld#";//下载文件路径用"#dnld#"标记

UINT thread(LPVOID p)
{char buff[1024];CSize size;size.cx = 0;size.cy = 30;int s = 1, msgcount, loop = 1, flag = 0;CWffosSocketSeverDlg *dlg = (CWffosSocketSeverDlg*)AfxGetApp()->GetMainWnd();//获得客户端数量msgcount = dlg->getcount();if (msgcount == -1)loop = 0;if (loop){s = 1;dlg->msgsock[msgcount] = accept(dlg->sock, (sockaddr*)&(dlg->servAdd), &(dlg->addlen));if (dlg->msgsock[msgcount] == INVALID_SOCKET){dlg->m_talk.SetWindowTextA("Error accept");}else{//启动线程AfxBeginThread(thread, 0);dlg->SetForegroundWindow();dlg->m_talkList.InsertItem(dlg->count++, "连接成功");dlg->m_talkList.InsertItem(dlg->count++, inet_ntoa(dlg->servAdd.sin_addr));//_WINSOCK_DEPRECATED_NO_WARNINGSdlg->m_talkList.Scroll(size);dlg->m_delete.EnableWindow(TRUE);//下面代码显示客户端可下载列表string upLoadDestHisLine;ifstream upLoadDestHis("E:/myLibForYunPan/upLoadDestHis.txt", ifstream::in);while (getline(upLoadDestHis, upLoadDestHisLine)){send(dlg->msgsock[msgcount], ("#okdl#" + upLoadDestHisLine).c_str(), 1024, 0);}upLoadDestHis.close();while (s != SOCKET_ERROR){//循环接收数据s = recv(dlg->msgsock[msgcount], buff, 1024, 0);dlg->SetForegroundWindow();string src = buff;string srcBegin = { buff[0], buff[1], buff[2], buff[3], buff[4], buff[5] };if ("#talk#" == srcBegin)//对话消息用"#talk#"标记
                {src.erase(0, 6);//去掉标记dlg->m_talkList.InsertItem(dlg->count++, src.c_str());dlg->m_talkList.Scroll(size);// Forces the control to scroll its client area by the specified amount.            
                }if ("#upld#" == srcBegin)//上传文件路径用"#upld#"标记
                {src.erase(0, 6);//去掉标记upLoadFlag = TRUE;//恢复默认//------------------------------------------------------------//下面代码检查是否上传过,服务器端是否删除对应文件,决定是否能上传unsigned int j = 0;for (unsigned int i = 0; i < src.size(); i++){if ('/' == src[i])j = i > j ? i : j;}string fName = src;fName.erase(0, j + 1);//去掉路径,保留文件名fName = "E:/myLibForYunPan/data/" + fName;//目的文件路径记为fNameifstream RupLoadDest(fName, ifstream::in);if (RupLoadDest){upLoadFlag = FALSE;//上传过,不能再上传 
                    }RupLoadDest.close();if (FALSE == upLoadFlag){send(dlg->msgsock[msgcount], (TALK + "该文件上传过,不能再次上传").c_str(), 1024, 0);}//-----------------------------------------------------------if (TRUE == upLoadFlag)//未上传过
                    {ofstream WupLoadSrcHis("E:/myLibForYunPan/upLoadSrcHis.txt", ofstream::app);WupLoadSrcHis << src << endl;//写入上传的文件名到"E:/myLibForYunPan/upLoadSrcHis.txt"
                        WupLoadSrcHis.close();unsigned int j = 0;for (unsigned int i = 0; i < src.size(); i++){if ('/' == src[i])j = i > j ? i : j;}string fName = src;fName.erase(0, j + 1);//去掉路径,保留文件名dest = "E:/myLibForYunPan/data/" + fName;//目的文件路径记为dest
ofstream WupLoadDestHis("E:/myLibForYunPan/upLoadDestHis.txt", ofstream::app);WupLoadDestHis << dest << endl;//写入上传的文件名到"E:/myLibForYunPan/upLoadDestHis.txt"
                        WupLoadDestHis.close();const string TO = "上传至";string SrcToDestHis = src + TO + dest;//记录条ofstream WupLoadSrcToDestHis("E:/myLibForYunPan/upLoadSrcToDestHis.txt", ofstream::app);WupLoadSrcToDestHis << SrcToDestHis << endl;//写入上传源和目的信息到"E:/myLibForYunPan/upLoadSrcToDestHis.txt"
                        WupLoadSrcToDestHis.close();dlg->m_talkList.InsertItem(dlg->count++, SrcToDestHis.c_str());dlg->m_talkList.Scroll(size);// Forces the control to scroll its client area by the specified amount.            
send(dlg->msgsock[msgcount], (TALK + SrcToDestHis).c_str(), 1024, 0);//向客户发送信息
                    }dlg->talkListDRefsh();//有新上传,刷新可删除列表
                }if ("#dnld#" == srcBegin)//下载文件路径用"#dnld#"标记
                {src.erase(0, 6);//去掉标记//下面代码检查是否可下载ifstream RdownLoadSrc(src, ifstream::in);if (!RdownLoadSrc){downLoadFlag = FALSE;//该文件不存在,不能下载send(dlg->msgsock[msgcount], (TALK + "该文件不存在,不能下载").c_str(), 1024, 0);//向客户端发送消息
                    }else{downLoadFlag = TRUE;//该文件存在,能下载send(dlg->msgsock[msgcount], ("#dnld#"+src).c_str(), 1024, 0);//向客户端发送消息string downLoadSrcLine;while (getline(RdownLoadSrc, downLoadSrcLine)){send(dlg->msgsock[msgcount], downLoadSrcLine.c_str(), 1024, 0);}}RdownLoadSrc.close();}if (("#talk#" != srcBegin) && ("#upld#" != srcBegin) && ("#dnld#" != srcBegin) && (TRUE == upLoadFlag)){ofstream toDest(dest, ofstream::app);toDest << src << endl;//下面代码复制传过来的src信息到dest
                    toDest.close();}elsecontinue;}send(dlg->msgsock[msgcount], "#talk#Disconnected", 1024, 0);dlg->m_talkList.InsertItem(dlg->count++, "Disconnected");dlg->m_talkList.Scroll(size);dlg->msgsock[msgcount] = NULL;for (int i = 0; i < 50; i++)if (dlg->msgsock[i] != NULL)flag = 1;if (flag != 1)dlg->m_delete.EnableWindow(FALSE);closesocket(dlg->msgsock[msgcount]);}//终止线程AfxEndThread(0);return 0;}
}//获得还没有使用的socket数组号
int CWffosSocketSeverDlg::getcount()
{for (int i = 0; i<50; i++){if (msgsock[i] == NULL)return i;}return -1;}void CWffosSocketSeverDlg::talkListDRefsh()
{m_talkListD.DeleteAllItems();string upLoadHistory;string upLoadedFile = "E:/myLibForYunPan/upLoadDestHis.txt";ifstream ifUpLoadedFile(upLoadedFile, ifstream::in);while (getline(ifUpLoadedFile, upLoadHistory)){CSize size;size.cx = 0;size.cy = 30;m_talkListD.InsertItem(count++, upLoadHistory.c_str());m_talkListD.Scroll(size);// Forces the control to scroll its client area by the specified amount.
    }
}void CWffosSocketSeverDlg::cliTalkListDRefsh()
{//下面代码显示客户端可下载列表string upLoadDestHisLine;ifstream upLoadDestHis("E:/myLibForYunPan/upLoadDestHis.txt", ifstream::in);while (getline(upLoadDestHis, upLoadDestHisLine)){ifstream RupLoadDest(upLoadDestHisLine, ifstream::in);if (RupLoadDest){for (int i = 0; i<50; i++){if (msgsock[i] != NULL)send(msgsock[i], ("#okdl#" + upLoadDestHisLine).c_str(), 1024, 0);}}RupLoadDest.close();}upLoadDestHis.close();
}
View Code

 

转载于:https://www.cnblogs.com/wffos/p/6727163.html

http://www.lbrq.cn/news/1404649.html

相关文章:

  • joomla做类似赶集网的网站/网站注册步骤
  • 做网站1天转多钱/广州百度搜索优化
  • 织梦珠宝网站模板/软文营销步骤
  • 网站翻译建设/什么是百度竞价排名
  • 手机如何免费做网站/深圳优化服务
  • asp access 手机站 用于做微网站/竞价外包托管费用
  • 网页设计的基本元素/seo关键字优化教程
  • 做印刷的有什么网站/网络维护培训班
  • 建设银行官方网站下载/seo营销外包
  • 网页设计行业/seo是什么意思啊
  • 公司网站的seo怎么做/株洲百度seo
  • wordpress主题自定义添加后台设置/宁波seo行者seo09
  • ftp怎么做网站的备份/好用的磁力搜索引擎
  • 网站做优化效果怎么样/阿里巴巴官网
  • 鄂温克族网站建设/北京网站优化排名
  • 做的网站程序防止倒卖/优化大师软件下载
  • 那家做网站好/关联词有哪些五年级
  • 青岛做公司网站的公司/沈阳网络关键词排名
  • 超频三网站谁家做的/关键词投放
  • 做网站有啥软件/口红的推广软文
  • 网站字体样式/网站数据分析
  • 网站怎么做响应式/品牌推广公司
  • 手机网站底部导航代码/宝塔建站系统
  • 天津个人做网站/全面网络推广营销策划
  • 上饶做网站要多少钱/知名品牌营销策划案例
  • 国家工程建设标准化协会网站/郑州优化网站关键词
  • 有趣的网站网址/搜索引擎优化工作
  • 什么网站能免费/免费企业建站
  • 彩票网站开发软件/网络销售怎么学
  • 爱站网关键词挖掘工具站长工具/什么软件推广效果好
  • InnoDB为什么使用B+树实现索引?
  • 实现自己的AI视频监控系统-第一章-视频拉流与解码1
  • OpenSSL与OpenSSH的关系
  • 云原生堡垒机渗透测试场景
  • 决策树:机器学习中的强大工具
  • 理解AQS的原理并学习源码