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

网站建设英文专业术语mvc 网站模板

网站建设英文专业术语,mvc 网站模板,南宁刚刚发生的事,wordpress栏目设置该程序在IP127.0.0.1以及端口5000环境下测试 有一段时间没有在Windows下用C进行网络编程了#xff0c;这段日子都在做QT的网络编程和OpenCV的图像识别。 今天重新写个Windows下C的#xff0c;基于TCP的双端连接建立与断开检测的demo#xff0c;巩固下自己Windows下的网络编程… 该程序在IP127.0.0.1以及端口5000环境下测试 有一段时间没有在Windows下用C进行网络编程了这段日子都在做QT的网络编程和OpenCV的图像识别。 今天重新写个Windows下C的基于TCP的双端连接建立与断开检测的demo巩固下自己Windows下的网络编程知识点。 在下面的代码共有四个类一个内部结构体以下是他们的介绍。 WebException类可以忽略是一个异常类用于反馈意外情况。 WebBase类是服务端和客户端的基类用于初始化共同的基本数据。 Server类是服务端类用于接收客户端连接。 Client类是客户端类用于连接服务端。 Server类的内部结构体ClientSocket用以保存已经连接到服务端的客户端Socket。 由于只是做个简单的相互检测连接与断开的demo所以整个程序就全在这一个cpp中了。 该demo的主要功能是 服务器能被连接十次服务器可以检测客户端断开与否。客户端连接上服务器后客户端可以检测到与服务器失联与否。 服务端的整体思路是 主线程负责检测客户端的连接请求服务端同意连接获取到客户Socket后以clock()获取到的值当作客户id以id为key将客户Socket保存到cliSockets这个map中 保存好客户Socket后开启一条线程用以检测连接是否丢失如果丢失了(暂不考虑重连)则回收客户的Socket与相应线程资源 此外为了了解服务端关闭后客户端的失联处理服务端被设置成只能连接十次 十次后关闭服务端服务端这次的主动关闭将回收所有存活的客户端Socket和相应的线程资源。 安全回收后服务端正式关闭。 客户端的整体思路是 主线程负责检测连接上服务端每秒尝试一次连接连接成功获取到服务端Socket后开启一条线程用以检测连接是否丢失如果丢失了(暂不考虑重连)则回收服务端的Socket与相应线程资源 如果客户端发现在主动断开与服务端的连接前就已经无法联系服务端那么将回收服务端Socket和相应的线程资源。 安全回收后客户端正式关闭。 #pragma comment(lib,Ws2_32.lib) #include iostream #include Windows.h #include thread #include conio.h #include map using namespace std; //自定义的异常类用来反馈网络异常 class WebException { public:WebException(int error):error(error), errorMsg(未知异常) {}WebException(int error,string errorMsg) :error(error), errorMsg(errorMsg) {}virtual void what()const {switch (error) {default:cout errorMsg endl;}} private:int error;string errorMsg; }; class WebBase { protected://设定监听端口WebBase():port(5000){}virtual ~WebBase() {closesocket(_socket);//关闭套接字cout 套接字关闭完成... endl;WSACleanup();//清理资源cout DLL资源已清理... endl;system(pause);} public:virtual void init() {wVersionRequested MAKEWORD(2, 2);//计算版本号if (0 ! WSAStartup(wVersionRequested, ws)) throw WebException(0, 初始化DLL失败);cout 初始化DLL完成... endl;_socket socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);memset(addr, 0, sizeof(addr));//初始化地址结构为0addr.sin_family AF_INET;//赋值addr.sin_port htons(port);//赋值端口信息addr.sin_addr.S_un.S_addr INADDR_ANY;//表示32位IPv4地址以网络字节序保存}WORD wVersionRequested;//版本号WSADATA ws;//记录WinSock DLL信息SOCKET _socket;//创建套接字const u_short port;//端口号struct sockaddr_in addr;//地址信息 }; class Server:public WebBase { public:~Server() {cout 当前存活的客户端连接数: cliSockets.size() endl;//非强迫地要求所有线程停止活动mapclock_t, pairbool, thread::iterator itr cliThreads.begin();while (itr ! cliThreads.end()) {cliThreads[itr-first].first false;itr;}//要求完之后等待所有线程结束此处不用资源释放资源释放在线程中完成itr cliThreads.begin();while (itr ! cliThreads.end()) {cliThreads[itr-first].second.join();cliThreads.erase(itr-first);itr cliThreads.begin();}cout 服务器已关闭所有客户端连接 endl;}void init() {cout 正在部署服务器... endl;WebBase::init();if (SOCKET_ERROR bind(_socket, (const sockaddr*)(addr), sizeof(addr)))throw WebException(0, 绑定失败);cout 套接字绑定成功... endl;if(SOCKET_ERROR listen(_socket, 5))//设置服务端网络监听队列为5throw WebException(0, 监听设置失败);cout 正在监听... endl;char buff[128];gethostname(buff, sizeof(buff)); cout 服务器IP: inet_ntoa(*(in_addr*)*(gethostbyname(buff)-h_addr_list)) endl;cout 服务器等待连接请求中... endl;int live_num 10;while (live_num--) {ClientSocket cliSocket;int len sizeof(cliSocket.addr);cliSocket._socket accept(_socket, (struct sockaddr*)cliSocket.addr, len);//接受连接请求Sleep(1);clock_t id clock();cliSockets[id] cliSocket;cliThreads[id] pairbool,thread(true,thread(Server::testConRun, this, id));cout 客户( id )建立起与服务器的连接 endl;}shutdown(_socket, 3);cout 已完成十次连接服务器自动关闭 endl;} private:void testConRun(clock_t id) {//每两秒1次连接检测int num 0;while (cliThreads[id].first) {num;if (num 10) {num 0;if (SOCKET_ERROR send(cliSockets[id]._socket, t, sizeof(t), 0)) {cout 客户( id )断开了与服务器的连接 endl;closesocket(cliSockets[id]._socket);cout 关闭了客户( id )的Socket endl;cliSockets.erase(id);//这里让线程与thread类分离使得erase掉thread类不影响线程//return后分离了的线程会自己自动销毁cliThreads[id].second.detach();cliThreads.erase(id);return;}}Sleep(200);}if (!cliThreads[id].first) {cout 服务器断开了与客户( id )的连接 endl;closesocket(cliSockets[id]._socket);cout 关闭了客户( id )的Socket endl;cliSockets.erase(id);}}struct ClientSocket {struct sockaddr_in addr;//地址信息SOCKET _socket;//创建套接字};mapclock_t, Server::ClientSocket cliSockets;mapclock_t, pairbool, thread cliThreads; }; class Client:public WebBase { public:Client():testCon(nullptr),isTestConRun(true){}~Client() {isTestConRun false;testCon-join();closesocket(_socket);cout 关闭了客户端的Socket endl;testCon.release();}void init() {cout 正在部署客户端... endl;WebBase::init();addr.sin_addr.S_un.S_addr inet_addr(127.0.0.1);//表示32位IPv4地址以网络字节序保存while (SOCKET_ERROR connect(_socket, (const sockaddr*)addr, sizeof(addr))) {cout 连接服务器失败 endl;Sleep(1000);}cout 连接服务器成功输入任意键以断开链接 endl;testCon.reset(new thread(Client::testConRun,this));_getch();} private:void testConRun() {//每两秒1次连接检测int num 0;while (isTestConRun) {num;if (num 10) {num 0;if (SOCKET_ERROR send(_socket, t, sizeof(t), 0)) {cout 服务器断开了与客户端的链接 endl;return;}}Sleep(200);}}unique_ptrthread testCon;volatile bool isTestConRun; }; //启动服务端 void startServer() {Server server;try {server.init();}catch (WebException e) {e.what();}catch (...) {cout 未知其他异常;} } //启动客户端 void startClient() {Client client;try {client.init();}catch (WebException e) {e.what();}catch (...) {cout 未知其他异常;} } int main() {while (true) {system(cls);cout 请选择端的类型: endl;cout 1.服务端 endl;cout 2.客户端 endl;cout 0.退出 endl;cout 请输入: endl;switch (_getch()) {case 1:system(cls); startServer();break;case 2:system(cls); startClient();break;case 0:return 0;}} }
http://www.hkea.cn/news/14458830/

相关文章:

  • 网站维护服务费国内网站建设公司排名
  • 做网站设计的总结私密浏览器看片
  • 简述网站的推广策略建设银行郑州中心支行网站
  • seo网站项目讲解广州微网站建设价位
  • 网站做微信接口吗wordpress微信营销
  • 外贸网站有哪些?好看简洁的logo设计
  • 推广网站的作用永久免费空间免备案
  • 网站建设 王卫洲dede wap网站
  • 关于网站建设实验报告怎么用ps做网站幻灯片
  • wordpress怎么装模版杭州seo公司哪家好
  • 可以看女人不易做网站wordpress git项目
  • 昆明网站建设介绍中国建设信息化期刊官网
  • 图片短链接生成器优化网络推广外包
  • 网站的种类竞价推广sem
  • 网站建设行规在线编程的网站
  • 网站服务器租用一般费用类似wordpress的图片上传
  • 徐州学习网站建设免费制作模卡app的软件
  • 临沂网站建设方案书not found的网站
  • 沈阳网站推广公司排名跟有流量的网站做友情链接
  • 怎么用flash做视频网站微信公众号网页制作教程
  • 渭南做网站的公司电话国内哪个应用商店app最全
  • 深圳龙华的学校网站建设甘肃最新消息今天
  • 济南建站网站网站技术策划
  • windows2008 iis 网站优化网站除了百度站长
  • 做响应式网站哪家好网站维护是什么意思
  • 金湖做网站网站备案怎么更改吗
  • 品牌网站建设 2蝌蚪小河南网络营销哪家便宜
  • 搭建一个网站多少钱哈尔滨电脑南沙区网站建设
  • 做花型设计哪个网站下载素材好wordpress 主页不显示图片
  • 网站开发技术方法与路线巢湖网站制作