久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

服務器端的收發線程函數

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年12月17日   【字體:


練習寫套接字通信程序時候寫的一段代碼,本來想寫個聊天室但寫來寫去進度卡在界面上接節下來都是通信部分的代碼
因為只是試驗用所以都是用C寫的,等界面部分完工后會用類來封裝一下
因為本人E文很爛所以變量和函數的命名是具有中國特色的,求理解.不過我注釋的很詳細了
謹以此文紀念我那坑爹的編程自學生涯......................
 
#include "shujubao.h"
#include "stdlib.h"
//定義線程共享全局變量用來協調線程進度
int M=0;    //指揮發送線程工作,為1則把fasjgd中的數據發送出去
struct SJGD fasjgd;  //數據發送完后把M置0
/////////////////////////////////////////////////////////////////////////////////////////
//接收線程函數
DWORD WINAPI JieXC (LPVOID jie)
{
 ////////////////////////////////////////
 SOCKET callsock=INVALID_SOCKET;
 callsock=(SOCKET)jie;
 char data[SZBAO];  //接收緩沖區
 struct SJGD sjgd; //標準數據包存放管道
    sjgd.sjcd=SZBAO;
 struct SJB sjb; //封包結構體
 HANDLE File;  //文本句柄
 DWORD szfile;
 /////////////////////////////////////////////////
    while (1)
 {
  recv(callsock,data,SZBAO,0); //接收一個標準數據包錯誤數據包丟棄不處理
        char_byte(data,&sjgd,1,SZBAO); //對緩沖區進行強制類型轉換不轉換的話解包會出錯
  ZeroMemory(data,SZBAO);  //清零接收緩沖區
        if(Jiebao(&sjgd,&sjb))  //如果是標準數據包的話就進行功能判斷和處理
  {
          switch(sjb.data.msg_stoc.cmd)
    {
              case CMD_GUANGJI:
              //關機功能
              break;
              case CMD_CMD:
              //命令行功能
              system((char*)sjb.data.msg_stoc.shuju);
              break;
     case CMD_JIEPING:
              //截屏功能
     break;
     //////////////////////////////////////////////////////////////////////////////////////////
     case CMD_FTP:  //文件傳輸功能
              if(sjb.tou.sxid!=1) break;
     //以FTP包順序標號為1的包的附加數據為文件名創建文件
              //File=CreateFile((char*)sjb.data.msg_stoc.shuju,GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
              File=CreateFile("c:\\按鍵寶典.chm",GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
     //進入文件接收循環
     while(sjb.tou.sxid!=0)
     {
                recv(callsock,data,SZBAO,0); //接收一個標準數據包錯誤數據包丟棄不處理
                char_byte(data,&sjgd,1,SZBAO); //對緩沖區進行強制類型轉換不轉換的話解包會出錯
                if(Jiebao(&sjgd,&sjb))
    {
                 WriteFile(File,(char*)sjb.data.msg_stoc.shuju,sjb.data.msg_stoc.sjbcd,&szfile,NULL);
    }
     }
     CloseHandle(File);
     ////////////////////////////////////////////////////////////////
     char sz[]="文件已經接收成功!";
     MoveMemory(fasjgd.sjgd,sz,sizeof(sz));
     fasjgd.sjcd=sizeof(sz);
              Fengbao(1,CMD_QQ,1,&fasjgd,&sjb);    //給控制端發一個文件接收成功消息數據包
     Fabao(&sjb,&fasjgd);
     M=1;
     /////////////////////////////////////////////////////////////////
     break;
     //////////////////////////////////////////////////////////////////////////////////////////////
    }
  }
 }
 /////////////////////////////////////////////////
 return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
//發送線程函數
//工作流程是功能函數把各種數據包風包好后發送到fasjgd并把M置1,發送線程開始發包成功后把M置0
DWORD WINAPI FaXC (LPVOID fa)
{   
 SOCKET callsock=INVALID_SOCKET;
 callsock=(SOCKET)fa;
 while(1)
 {
 if(M==1)
 {
   send(callsock,(char*)fasjgd.sjgd,fasjgd.sjcd,0);
   M=0;
 }
 }
 return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////
 

關閉窗口

相關文章

主站蜘蛛池模板: 成人黄色网址大全 | 久久夜视频 | 黄色小视频入口 | 99精品一区二区三区 | 日本中文字幕在线观看 | 亚洲综合一区二区三区 | 精品国产乱码久久久久久果冻传媒 | 在线看一区二区三区 | 中文字幕久久久 | 在线观看视频一区二区三区 | 日韩资源| 成人国产免费观看 | 国产一区二区三区在线 | 手机av在线| 亚洲综合精品 | 在线观看成人 | 国产精品久久精品 | 国产91丝袜在线熟 | 波多野吉衣在线播放 | 欧美一级黄色免费看 | 欧美激情亚洲天堂 | 欧美一级黄色片免费观看 | 小h片免费观看久久久久 | av毛片 | 国产九九九九 | 国产精品亚洲视频 | 蜜桃官网 | 伊人精品在线 | 久久一区视频 | 视频一区二区三区在线观看 | 欧美精品一区二区在线观看 | 米奇7777狠狠狠狠视频 | 亚洲在线 | 久久久入口 | 成年人视频在线免费观看 | 一个色在线| 欧美一区二区三区的 | 久久国产欧美日韩精品 | 中文字幕欧美在线观看 | 日韩毛片播放 | 国产日韩在线观看一区 |