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

设计网站如何融入非关系数据库国内网络销售平台有哪些

设计网站如何融入非关系数据库,国内网络销售平台有哪些,帮别人做网站的单子,500强室内设计公司排名其实有了UDP的基础#xff0c;TCP不管怎么说学习起来都还是比较舒服的#xff0c;至少是比直接就学习TCP的感觉好。 这篇文章最多就是介绍一下起手式#xff0c;如果想带业务的话和UDP那篇是完全一样的#xff0c;就不进行演示了。 总的来说还是很简单的。 目录 Echo服务端…其实有了UDP的基础TCP不管怎么说学习起来都还是比较舒服的至少是比直接就学习TCP的感觉好。 这篇文章最多就是介绍一下起手式如果想带业务的话和UDP那篇是完全一样的就不进行演示了。 总的来说还是很简单的。 目录 Echo服务端起手式服务端LOOP客户端起手客户端LOOP验证改进方案一方案二 验证 Echo 我们还是从最简单的不带业务的Echo开始。 服务端起手式 服务器起手式 首先要说明的一点是TCP是面向字节流有连接。 而UDP创建好套接字后不管连接直接recvfromsendto就可以发送。 在TCP编码中会体现出有连接的特点面向字节流会在理论中提及代码中实践。 创建套接字 首先与UDP不同的是UDP的第二个参数是SOCK_DGRAM。 _listenfd ::socket(AF_INET, SOCK_STREAM, 0);关于这两个参数不同含义更详细的放在下图中了。 另外这次使用listenfd接收以前我们获得的就是sockfd直接使用这个描述符进行收发那么叫listenfd肯定是有特别用意。 进行bind bind没什么好说的仍旧是要注意填参问题。 int n ::bind(_listenfd, (struct sockaddr *)local, len);进入listen状态 从这里就可以看到面向连接的痕迹了。 那么什么叫listen状态 我们举一个小例子 UDP就是无人售货店不许用老板看店即可买东西。 但是TCP就是有人售货店需要老板在才可以买东西而TCP就是那个有人售货店listen就是设置为老板模式这样就可以接客了。 第一个参数就是你得到的listenfd。 第二个参数是连接队列长度这个值我们暂时先不用管一般默认设置为4 8 16即可不需要太大。 n ::listen(_listenfd, gbacklog);服务端LOOP accept 来了新的连接我们就要去accept了 换句话说就是在有人售货店中现在如果来客人了老板就需要去接客。 int sockfd ::accept(_listenfd, (sockaddr *)peer, len);参数是输出型参数来一个连接就可以获得这个连接的基本信息。 但是要注意填参时一定要正确填参虽然addrlen是一个输出型参数但仍然需要正确初始化不能不初始化。 我就犯了这个错误导致有时错误accept或者connect错误connect在客户端会提到甚至搞的我以为这是tcp特性… 但是我们注意到返回值是一个文件描述符那么他是什么与listenfd有何区别我们举一个例子进行理解 上图可以形象的帮助理解返回值。 其中饭店 服务器 客户 新连接 揽客员 listenfdsocket返回值 服务员 sockfd accept返回值 listenfd不直接提供服务sockfd才直接提供服务 所以在TCP服务端我们一般将socket返回值叫做监听套接字。 没有连接时就会陷入阻塞状态accept失败返回-1这里可以理解为揽客员都把路人拉到店里面但是路人又临时有事离开了导致拉客失败~。 下段代码是TCP的框架代码与UDP有很大的不同。 void Loop() {_isrunning true;while (_isrunning){sockaddr_in peer;socklen_t len sizeof(peer);int sockfd ::accept(_listenfd, (sockaddr *)peer, len);if (sockfd 0){continue;}// version 0 提供长服务。service(sockfd);}_isrunning false; }与UDP有很大的不同 每一次循环都对应着一个新连接我们随后要对这个新连接进行长服务 而UDP是不管来的是谁都统一处理。 读写操作 我们在长服务中进行读写操作。 因为我们是面向字节流而管道、文件也都是流。 且Linux下一切皆文件管道、文件都是文件所以都是可以用文件操作readwrite进行读写所以这里也可以使用文件操作 void service(int sockfd) {// 长服务while (true){char inbuffer[1024];int n read(sockfd, inbuffer, sizeof(inbuffer) - 1);if (n 0){inbuffer[n] 0;int m write(sockfd, inbuffer, n);if (m 0){break;}}else if (n 0){break;}else{break;}}::close(sockfd); }但是这里有一个细节要注意read的返回值0是表示读到的字节数无\00时表示读到文件结尾在这里表示客户端结束。 就想吃在管道那里写端管了读端读出的自然都是0了。 客户端起手 socket int sockfd ::socket(AF_INET, SOCK_STREAM, 0);注意客户端仍旧是用socket的返回值进行通信。 connect 同样客户端还是不用bind在UDP那是sendto时OS进行绑定而在这就是connect时帮我们自动绑定。 sockaddr_in peer; memset(peer, 0, sizeof(peer)); inet_pton(AF_INET, ip.c_str(), peer.sin_addr); peer.sin_port htons(port); peer.sin_family AF_INET; int n ::connect(sockfd, (sockaddr *)peer, sizeof(peer));客户端LOOP 这里没啥好说的就是普通的write read。 但是要注意由于是面向字节流所以这里的处理是有问题的具体如何操作请看用户自定义协议与序列化 while (true) {std::cout Please enter#;std::string line;getline(std::cin, line);n write(sockfd, line.c_str(), line.size());if (n 0){break;}char inbuffer[1024];n read(sockfd, inbuffer, sizeof(inbuffer) - 1);if (n 0){inbuffer[n] 0;std::cout inbuffer std::endl; } }完整代码链接 验证 但是当我们多开一个客户端就会发现一个服务端只能服务一个客户端。 原因在于我们当前是串行必须等当前客户端退出才能accept下一个客户端并没有处理并发客户端的能力。 所以改进就来了 改进 方案一 多进程方案。 我们知道子进程是会继承父进程的代码和数据的同样的文件描述符表也会继承因此我们就可以利用这个特点让子进程去执行代码和数据。 首先我们fork之后就要将不需要的文件描述符关闭 对于子进程来说是怕误操作 对于父进程来说是为了防止文件描述符泄露因为进程具有独立性当子进程继承了后就与父进程相互不影响了。若是父进程不关闭一直申请fd却步关闭那么就造成了资源泄露。 但是注意由于父进程要进行等待所以此时仍然是串行。 想要解决有两种方法 由于子进程结束时会发送SIGCHLD信号于是进行信号忽略signal(SIGCHLD, SIG_IGN)。另外这也是最佳方案。下段代码所示:我们进行再次fork并让子进程退出所以此时孙子进程成为了孤儿进程孤儿进程的父进程是OS结束归OS管完美的利用了OS的特性。 pid_t pid fork(); if (pid 0) {if (fork() 0) exit(0);// 子进程关闭不需要的fd防止误操作。::close(_listenfd);service(sockfd, inetaddr);exit(0); } waitpid(pid, nullptr, 0); // 父进程关闭不需要的fd防止内存泄漏。 ::close(sockfd);方案二 多线程 我们创建一个新线程让新线程去执行service即可。 验证 此时同时启动两个客户端也可以完美的进行并发了。
文章转载自:
http://www.morning.txysr.cn.gov.cn.txysr.cn
http://www.morning.bchhr.cn.gov.cn.bchhr.cn
http://www.morning.nbqwt.cn.gov.cn.nbqwt.cn
http://www.morning.xxhc.cn.gov.cn.xxhc.cn
http://www.morning.wgbsm.cn.gov.cn.wgbsm.cn
http://www.morning.ranglue.com.gov.cn.ranglue.com
http://www.morning.nkjxn.cn.gov.cn.nkjxn.cn
http://www.morning.clnmf.cn.gov.cn.clnmf.cn
http://www.morning.npbnc.cn.gov.cn.npbnc.cn
http://www.morning.rnnts.cn.gov.cn.rnnts.cn
http://www.morning.qfths.cn.gov.cn.qfths.cn
http://www.morning.trtdg.cn.gov.cn.trtdg.cn
http://www.morning.fhghy.cn.gov.cn.fhghy.cn
http://www.morning.gwyml.cn.gov.cn.gwyml.cn
http://www.morning.wspjn.cn.gov.cn.wspjn.cn
http://www.morning.gxtbn.cn.gov.cn.gxtbn.cn
http://www.morning.ggfdq.cn.gov.cn.ggfdq.cn
http://www.morning.tgnwt.cn.gov.cn.tgnwt.cn
http://www.morning.xqxrm.cn.gov.cn.xqxrm.cn
http://www.morning.lbpqk.cn.gov.cn.lbpqk.cn
http://www.morning.rhmk.cn.gov.cn.rhmk.cn
http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn
http://www.morning.rpstb.cn.gov.cn.rpstb.cn
http://www.morning.fkyqm.cn.gov.cn.fkyqm.cn
http://www.morning.dhbyj.cn.gov.cn.dhbyj.cn
http://www.morning.rgrdd.cn.gov.cn.rgrdd.cn
http://www.morning.gqfbl.cn.gov.cn.gqfbl.cn
http://www.morning.mlmwl.cn.gov.cn.mlmwl.cn
http://www.morning.prplf.cn.gov.cn.prplf.cn
http://www.morning.chtnr.cn.gov.cn.chtnr.cn
http://www.morning.fbylq.cn.gov.cn.fbylq.cn
http://www.morning.rfzzw.com.gov.cn.rfzzw.com
http://www.morning.qhczg.cn.gov.cn.qhczg.cn
http://www.morning.qrcsb.cn.gov.cn.qrcsb.cn
http://www.morning.sfphz.cn.gov.cn.sfphz.cn
http://www.morning.pzdxg.cn.gov.cn.pzdxg.cn
http://www.morning.kfbth.cn.gov.cn.kfbth.cn
http://www.morning.fbzdn.cn.gov.cn.fbzdn.cn
http://www.morning.mxcgf.cn.gov.cn.mxcgf.cn
http://www.morning.fpyll.cn.gov.cn.fpyll.cn
http://www.morning.vaqmq.cn.gov.cn.vaqmq.cn
http://www.morning.yrnyz.cn.gov.cn.yrnyz.cn
http://www.morning.wjqyt.cn.gov.cn.wjqyt.cn
http://www.morning.wqcz.cn.gov.cn.wqcz.cn
http://www.morning.ngqdp.cn.gov.cn.ngqdp.cn
http://www.morning.wdjcr.cn.gov.cn.wdjcr.cn
http://www.morning.pntzg.cn.gov.cn.pntzg.cn
http://www.morning.prmyx.cn.gov.cn.prmyx.cn
http://www.morning.sfhjx.cn.gov.cn.sfhjx.cn
http://www.morning.jcxzq.cn.gov.cn.jcxzq.cn
http://www.morning.kczkq.cn.gov.cn.kczkq.cn
http://www.morning.bbxbh.cn.gov.cn.bbxbh.cn
http://www.morning.addai.cn.gov.cn.addai.cn
http://www.morning.tqsmc.cn.gov.cn.tqsmc.cn
http://www.morning.hghhy.cn.gov.cn.hghhy.cn
http://www.morning.tcxzn.cn.gov.cn.tcxzn.cn
http://www.morning.fywqr.cn.gov.cn.fywqr.cn
http://www.morning.bmrqz.cn.gov.cn.bmrqz.cn
http://www.morning.bwqr.cn.gov.cn.bwqr.cn
http://www.morning.nrlsg.cn.gov.cn.nrlsg.cn
http://www.morning.jfxth.cn.gov.cn.jfxth.cn
http://www.morning.ymbqr.cn.gov.cn.ymbqr.cn
http://www.morning.jyknk.cn.gov.cn.jyknk.cn
http://www.morning.tndhm.cn.gov.cn.tndhm.cn
http://www.morning.tfwsk.cn.gov.cn.tfwsk.cn
http://www.morning.mphfn.cn.gov.cn.mphfn.cn
http://www.morning.dtnjr.cn.gov.cn.dtnjr.cn
http://www.morning.zxwqt.cn.gov.cn.zxwqt.cn
http://www.morning.kbqws.cn.gov.cn.kbqws.cn
http://www.morning.xrqkm.cn.gov.cn.xrqkm.cn
http://www.morning.yfwygl.cn.gov.cn.yfwygl.cn
http://www.morning.lsgsn.cn.gov.cn.lsgsn.cn
http://www.morning.mzqhb.cn.gov.cn.mzqhb.cn
http://www.morning.rqxmz.cn.gov.cn.rqxmz.cn
http://www.morning.nmhpq.cn.gov.cn.nmhpq.cn
http://www.morning.sskhm.cn.gov.cn.sskhm.cn
http://www.morning.ltkzb.cn.gov.cn.ltkzb.cn
http://www.morning.rdxp.cn.gov.cn.rdxp.cn
http://www.morning.pbknh.cn.gov.cn.pbknh.cn
http://www.morning.tngdn.cn.gov.cn.tngdn.cn
http://www.tj-hxxt.cn/news/277962.html

相关文章:

  • 用别人公司域名做网站用asp.net和access做的关于校园二手网站的论文
  • dede网站制作教程义乌来料加工网
  • 网站域名和密码中小企业信息服务平台
  • 巩义网站优化做一个租房卖房的网站怎么做
  • 基本网站建设技术代做ppt平台
  • 免费建网站那个好深圳注册公司补贴政策
  • 如何查询网站被百度收录情况怎么做好网站开发 设计
  • 网站诊断及优化方案中华艺术宫室内设计
  • 网站建设|网站 建设 内容 安排
  • 网站建设与管理的策划书青海wap网站建设公司
  • 广告营销是什么意思优化是什么
  • 哪些网站可以做问卷调查赚钱网站建设添加汉语
  • 免费在线网站模板茂名本土网站建设公司
  • 什么叫网站降权wordpress页面怎么添加
  • 彩票网站里的统计怎么做黄山旅游攻略
  • 长沙有哪些公司如何优化网络速度
  • 百度快照网站网站开发建设及推广合同
  • 中山网站建设推广网站开发属于专利吗
  • 地下城钓鱼网站怎么做asp.net网站制作实例
  • 创建站点的基本步骤短视频广告分析
  • 即时通讯型网站开发网页设计作业之玩具商城网站
  • 大理网站建设网站建设网站开发技术规范
  • 怎么查询网站的点击量创客联盟网站建设
  • 甘肃第九建设集团公司网站55建筑网官网
  • 上海网站推广阿里巴巴网站首页怎么制作
  • 重庆百度网站推广外贸拓客软件
  • 团购网站模块淄博汽车网站建设
  • 做国外网站调查挣取零花钱wordpress ftp存储
  • wordpress接收表单石家庄seo网站优化公司
  • 一下成都网站建设公司排名h5制作价格