log4z

TCP accept返回的socket,服务端TCP连接数限制

时光总嘲笑我的痴心妄想 提交于 2020-04-27 04:28:16
http://www.cppblog.com/aa19870406/archive/2012/07/15/183595.html socket accept()返回的socket描述符的端口和listen描述符端口是一样的吗? as you know,一个socket是由一个五元组来唯一标示的,即(协议,server_ip, server_port, client_ip, client_port)。只要该五元组中任何一个值不同,则其代表的socket就不同。这里忽略协议的区别,在同一协议的基础上,服务器端的listen socket的端口可以看成(server_ip, server_port, ***, ***),其中***是通配符,它跟任何一个client_ip, client_port值都不同,可以简单看成是(0,0)对,当然实现不是这样的。这样在服务器端accept之后,返回的连接socket的四元组就是(server_ip, server_port, client_ip, client_port),这里的client_ip,client_port因连接的客户端的不同而不同。所以accept返回的socket和listen socket是不同的,不同之处就在于四元组中的客户端ip和port,而服务器端的server_ip和server_port还是相同的,也就是accpet(

vsprintf和wvsprintf的使用区别

心已入冬 提交于 2020-04-15 16:14:25
【推荐阅读】微服务还能火多久?>>> 场景 当传递多字节字符串进入如下函数代码,会产生截断,从而引出全文,VS工程使用多字节字符集 inline void LOG_D(LPCTSTR lpszFormat, ...) { va_list args; TCHAR szText[LOG4Z_LOG_BUF_SIZE] = { 0 }; va_start(args, lpszFormat); wvsprintf(szText, lpszFormat, args); LOGD(szText); va_end(args); } 1)了解vsprintf vsprintf是sprintf的一个变形,它只有三个参数。vsprintf用于处理携带多个不确定参数的函数,类似printf格式。vsprintf的前两个参数与sprintf相同:一个用于保存结果的字符串缓冲区和一个格式字符串。第三个参数是指向格式化参数。实际上,该参数代表了变化的传递参数。va_list、va_start和va_end函数在STDARG.H中定义)帮助我们处理变化的参数列表。。使用vsprintf函式,sprintf函式可以这样编写: int sprintf (char * szBuffer, const char * szFormat, ...) { int iReturn ; va_list pArgs ; va