![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程/多线程
文章平均质量分 66
SurgePing
不要让任何事情成为你不去学习的理由
展开
-
一些LVS实验配置、工具和方案
最近做了一些LVS配置和方案的验证实验,将过程中用到的一些配置、工具和具体的解决方案记录一下。使用DR模式。验证一种不中断业务的RealServer升级或者重启方案。网络规划:节点IP地址ceph1(RealServer1)172.16.0.114ceph2(RealServer2)172.16.0.115转载 2015-07-20 10:51:25 · 861 阅读 · 0 评论 -
5种服务器网络编程模型讲解
本文介绍几种服务器网络编程模型。废话不多说,直接正题。1.同步阻塞迭代模型同步阻塞迭代模型是最简单的一种IO模型。其核心代码如下:12345678bind(srvfd);listen(srvfd);for(;;){ clifd = accept(srvfd,...); //开始接受客户端来的连接 read(clifd,buf,...); //从客户端转载 2014-09-12 14:37:40 · 785 阅读 · 0 评论 -
线程池原理及创建(C++实现)
本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有转载 2014-03-05 16:35:04 · 1638 阅读 · 0 评论 -
如何终止线程的运行(C/C++
如何终止线程的运行(C/C++)想要终止线程的运行,可以使用以下方法: 1、线程函数返回(最好使用该方法)。 2、通过调用ExitThread函数,线程将自行撤消(最好不使用该方法)。 3、同一个进程或另一个进程中的线程调用TerminateThread函数(应避免使用该方法)。 4、ExitProcess和TerminateProcess函数也可以用来终止线程的运行(应避免使原创 2014-05-26 14:24:06 · 5835 阅读 · 0 评论 -
浅析:setsockopt()改善程序的健壮性
不断的收到coolmei25 (梅生)的答谢,我都不好意思了(我都没帮到他),下面写出我在网络编程中的一点心得体会,希望对他(^_^也对大家)有帮助:1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;转载 2013-09-18 18:07:57 · 782 阅读 · 0 评论 -
ACE框架简介以及一个基于ACE的C/S服务程序实例
前段时间参与一个C/S结构的系统的开发,使用C++,其中server端的系统要实现Linux和windows系统的跨平台。因为系统的结构和业务逻辑都不太复杂,所以开始就决定不使用类似ACE或Boost之类的库,而是自己实现。结果在实现过程中,还是遇到了许多麻烦的地方,例如:a) 跨平台。这一点相对比较容易,主要是针对类似多线程、socket通信等操作,定义统一的接口,使用define实现转载 2013-09-18 11:00:17 · 21293 阅读 · 0 评论 -
ACE框架的三大部分
ACE自适应通信环境(ADAPTIVE CommunicationEnvironment)是可以自由使用、开放源码的面向对象(OO)框架(Framework),在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++Wrapper Facade(包装外观)和框架组件,可跨越多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信转载 2013-09-18 11:04:47 · 1813 阅读 · 0 评论 -
ACE中网络通讯编程基本架构
原文来源:http://www.cppblog.com/walkspeed/archive/2007/02/25/18969.aspxACE_INET_Addr类,包装了网络地址ACE_SOCK_Connector类,扮演主动连接角色,发起通讯连接。连接到远端的服务。转载 2011-08-23 23:57:05 · 1180 阅读 · 0 评论 -
ACE在windows平台下的编译安装
今天晚上打算在windows平台上编译安装ACE,特记录此过程,希望与大家共勉.一、准备工作windows系统:windows xp IDE:Visual Studio Team System 2008(即Version 9版本) ACE:下载链接http://download.dre.vanderbilt.edu/,选择Latest Mi转载 2014-05-06 15:37:26 · 848 阅读 · 0 评论 -
网络编程:Reactor与Proactor的概念
1、标准定义两种I/O多路复用模式:Reactor和Proactor一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event Handler)。开发人员预先注册需要处理的事件及其事件处理器(或回调函数);事件分离器负责将请求事件传递给事件处理器。两个转载 2014-05-06 15:40:13 · 710 阅读 · 0 评论 -
串口通信编程--多线程异步方式
目录一串口通信基础 1.1串口通信原理与特点 1.2串口通信的传输方式 1.3串口通信的同步技术 1.4串行接口标准 二 API函数实现串口通信 2.1打开串口 2.1.1串口是否有驱动 2.1.2连接串口 2.1.3串口逻辑端口号大于10无法打开问题 2.2串口配置 2.2.1设置缓冲区大转载 2014-03-20 11:18:26 · 5384 阅读 · 0 评论 -
多线程执行CPU过高问题
在项目开发过程中使用到多线程技术,但原创 2014-09-26 11:23:48 · 20824 阅读 · 0 评论 -
Windows 实现的 OSI 七层模型结构图
对网络编程感兴趣的朋友可能都听过 OSI 七层模型,下面一张便是在 Windows 下实现的整个协议的结构图。[cpp] view plaincopyprint? Windows 下的 OSI 七层模型的实现结构 +-------------------------------+转载 2015-01-14 16:42:48 · 1260 阅读 · 0 评论 -
socket 获取外部地址
在linux内核中,一个socket有两个地址,一个本地地址,一个外部连接地址,。如果使用udp协议, 在调用bind函数时,会把你要绑定的那个地址填到socket的本地地址那块地方.你要设成0.0.0.0它就给你填成0.0.0.0 在udp使用bind函数只是为了不用每此发送数据都填充地址这一参数传递过程而已. 只是在你发送数据时才会根据情况把实际的ip地址填到发送的数据的相原创 2015-01-14 16:40:01 · 2028 阅读 · 0 评论 -
应用系统之间数据传输的几种方式
随着近年来SOA(面向服务技术架构)的兴起,越来越多的应用系统开始进行分布式的设计和部署。系统由原来单一的技术架构变成面向服务的多系统架构。原来在一个系统之间可以完成的业务流程,通过多系统的之间多次交互来实现。这里不打算介绍如何进行SOA架构的设计,而是介绍一下应用系统之间如何进行数据的传输。应用系统之间数据传输有三个要素:传输方式,传输协议,数据格式数据传输方式一般无非是以下几种:1转载 2015-07-08 12:36:45 · 1427 阅读 · 1 评论 -
网络异常 检查【此篇文章推荐大家看】
无论是否能访问外网,一个路由器上的目标机器,只要是在同一个网段,都是可以互相ping通的。从原理上分析,协议上,Socket连接使用的是TCP/UDP协议基于IP,Ping使用的是ICMP协议基于 IP。这就决定了两者只是共用IP层。只要网络是通的,就可以机器间互相共享文件。如果是局域网上,任何单台目标机器ping路由,ping本机都没有问题也可以上网,则说明局域网是通的。(参原创 2015-06-01 16:23:28 · 2531 阅读 · 0 评论 -
我读过的最好的epoll讲解 转自《知乎》
首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要从socket读转载 2015-06-01 17:26:29 · 3987 阅读 · 0 评论 -
网络编程释疑之:单台服务器上的并发TCP连接数可以有多少
曾几何时我们还在寻求网络编程中C10K问题的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了。我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用来说已经远远足够了,但是对于一些拥有很大用户基数的互联网公司,往往面临的并发连接数是百万,千万,甚至腾讯的上亿(注:QQ默认用的UDP协议)。虽然现在的集群,分布式技术可以为我们将并发负载分担在转载 2015-06-01 17:30:43 · 22646 阅读 · 2 评论 -
IP地址的三种表示格式 及 在Socket编程中的应用
关于windows中的INADDR_ANY这个宏头文件winsock.h中定义#define INADDR_ANY (u_long)0x00000000它是用于多IP机器上 比如你的机器有三个ip 192.168.1.1 202.202.202.202 61.1.2.3 如果你serv.sin转载 2015-06-01 15:35:06 · 7087 阅读 · 0 评论 -
PC机串口通信的工作原理
串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信原创 2013-11-25 12:39:05 · 9319 阅读 · 0 评论 -
SSH协议和Telnet协议远程登录 区别
虽然这两种服务协议都可以远程登录另一台机器,但SSH更安全!telnet是明文传送, ssh是加密的且支持压缩此外ssh服务一般都提供sftp支持,支持文件传送。telnet一般只能通过zmodem等协议传送文件。ssh还可以借助ssh连接建立tcp通道,映射远端或本地的端口,以及转发X到本地X Server等。 使用Telnet这个用来访问远程计算机的TCP/I原创 2015-05-15 15:39:59 · 36552 阅读 · 0 评论 -
windows串口编程文章
本文既写了在Windows中怎样用VC控件MSComm,又说明了API技术编程方法,在写用MSComm控件时,数据类型的转换说得不是太明白,初次涉猎串口编程的朋友恐怕看了还是编不出来;直接从底层编写的部分值得一读,说得较为详细,但你得先从VC教本上看一看什么是线程。目录:一.串行通信的基本原理 二.串口信号线的接法三.16位串口应用程序的简单回顾四.在MFC下的32位串口应用原创 2013-11-25 11:39:19 · 3423 阅读 · 0 评论 -
socket 通信关于bind那点事
结论:1、采用TCP通信时,客户端不需要bind()他自己的IP和端口号,而服务器必须要bind()自己本机的IP和端口号;2、若采用UDP通信时(这里是有客户端和服务器之分才这么说的,若是指定特定端口的UDP对等通信则不一样了),客户端可以也不需要bind()他自己的IP和端口号,而服务器需要bind自己IP地址和端口号;原因:1、因为服务器是时时在监听有没有客户端的连接原创 2013-09-18 15:12:38 · 69806 阅读 · 2 评论 -
关于SOCKET中send和recv函数工作原理总结
send函数工作原理: send函数只负责将数据提交给协议层。 当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR; 如果len小于或者等于s的发送缓冲区的长度,那么send先检查协议是否正在发送s的发送缓冲中的数据; 如果是就等待协议把数据发送完,如果协议还没有开始发送s的发送缓冲中原创 2014-04-24 14:10:16 · 1310 阅读 · 0 评论 -
什么代码才是线程安全的
对于多线程编程,很多人概念不清,写代码的时候要么是处处加锁,影响性能不说,还容易莫名其妙的死锁,还有人对多线程敬而远之。所以学习多线程编程最重要的不是学习API,而是理解什么才是多线程安全的代码从例子说起#include windows.h>#include process.h>long global1 = 0;volatile long global2 =转载 2014-03-05 16:37:25 · 1257 阅读 · 0 评论 -
USB口是串口的一种
网络通信方式的划分,按每次传送的数据位数分串行与并行通信,串口又分RS232,422,485,联想到PC连接触摸屏时,有时用串口COM口,有的也可以用USB口。 USB也是串行通信方式,所以USB口也是串口的一种。 USB的英文缩写是UniversalSerialBus,翻译成中文就是“通用串行总线”,也称通用串联接口。 一个是狭义的,一个是广义的。 如果你一定要区分的话,电脑原创 2012-11-13 16:09:11 · 5952 阅读 · 0 评论 -
Windows I/O模型、同步/异步、阻塞/非阻塞
同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处转载 2012-10-24 12:04:03 · 1623 阅读 · 0 评论 -
Linux下select函数实现的聊天服务器
消息缓冲区类MessageBuffer,接收线程将受到的消息放入缓冲区,发送线程从缓冲区中取出消息MessageBuffer.h[cpp] view plaincopy//MessageBuffer.h #ifndef _MESSAGE_BUF_INCLUDE_ #define _MESSAGE_BUF_INCLUDE_转载 2012-10-23 01:02:48 · 843 阅读 · 0 评论 -
最简单的Windows套接字(Socket)例子(源码,实例)
Server.exe PortNumber,例如Server 8000 Client.exe IPAddress PortNumber,例如Client 127.0.0.1 8000 然后在客户端的命令行输入字符串并回车,客户端将会把消息发送到服务器,服务器再把消息传回客户端,接收多个客户端的连接。服务器端,Server.cpp//Server.cp原创 2012-10-23 00:52:23 · 1350 阅读 · 0 评论 -
Windows下字符命令客户端
对应的Linux服务器使用select模型实现: Linux下select函数实现的聊天服务器http://blog.csdn.net/microtong/archive/2009/12/12/4989902.aspx 运行命令行为:Client.exe 127.0.0.1 8000 命令行参数分别为要连接的IP地址和端口转载 2012-10-23 00:59:03 · 640 阅读 · 0 评论 -
基于WSAAsyncSelect模型实现的聊天室图形客户端
对应的Linux服务器为:http://blog.csdn.net/microtong/archive/2009/12/12/4989902.aspx 头文件ClientDlg.h[cpp] view plaincopy// ClientDlg.h : 头文件 // #pragma once #in转载 2012-10-23 00:55:26 · 1420 阅读 · 0 评论 -
线程的状态转换图
线程在一定条件下,状态会发生变化。线程变化的状态转换图如下: 1、新建状态(New):新创建了一个线程对象。 2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。 3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。 4、阻塞状态转载 2012-10-22 14:58:33 · 2285 阅读 · 0 评论 -
网络编程Tcp的客户端和服务器端
本文首先对基础知识做一下介绍,后面会给出示例程序,便于分析理解。大部分资料来源于网络,自己只是对其做了个整理。 首先我们先来回顾下网络模型 1. ISO(internet Standard Organization 国际标准组织)对OSI(Open SYstem Interconnect开放互联模型) 七层网络模型的定义:物理层(Physical转载 2012-10-13 10:43:29 · 2152 阅读 · 0 评论 -
秒杀多线程系列篇
下面列出目录,方便大家查看。1.《秒杀多线程第一篇 多线程笔试面试题汇总》2.《秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别》3.《秒杀多线程第三篇 原子操作 Interlocked系列函数》4.《秒杀多线程第四篇 一个经典多线程同步问题》5.《秒杀多线程第五篇 经典线程同步 关键段CS》6.转载 2012-10-19 00:34:57 · 862 阅读 · 0 评论 -
多线程第一次亲密接触 CreateThread与_beginthreadex本质区别
本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_beginthreadex? 使用多线程其实是非常容易的,下面这个程序的主线程会创建了转载 2012-10-18 21:36:47 · 571 阅读 · 0 评论 -
TCP/IP协议包括哪些具体的协议?
TCP/IP协议(Transfer ControlnProtocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet国际互联网络的基础。 TCP/IP是网络中使用的基本的通信协议。虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文原创 2012-10-26 00:34:41 · 17112 阅读 · 0 评论 -
多线程的“并发”和“并行”区别
并发在单核和多核都可存在,就是同一时间有多个可以执行的进程。但是在单核中同一时刻只有一个进程获得CPU,虽然宏观上你认为多个进程都在进行。并行是指同一时间多个进程在微观上都在真正的执行,这就只有在多核的情况下了。多线程不是万能的.它是并发的,也就是说,它在创建和切换资源时还要额外消耗资源.而线程1执行完后线程2才能执行,这样用多线程的效率是不如串行处理的.多线程应原创 2012-10-26 01:37:18 · 16701 阅读 · 4 评论 -
多线程和多进程的区别 小结(总结很全面)
链接地址:点击打开链接转载 2012-10-28 20:29:08 · 1637 阅读 · 0 评论 -
多进程和多线程的优缺点
在Linux下编程多用多进程编程少用多线程编程。 IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical section和linux的pthread_mutex),windows比linux的要快五倍左右。当然这并不是说linux不好,而且在经过实际编程之后,综合来看我觉得linux更转载 2013-09-27 18:32:00 · 17153 阅读 · 0 评论 -
非阻塞套接字及select模型案例
1、 两种I/O模式 * 阻塞模式: 执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字默认为阻塞模式。可以通过多线程技术进行处理。 * 非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权。这种模式使用起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误。但功能强大。转载 2012-10-24 12:06:46 · 2253 阅读 · 0 评论