![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Socket
文章平均质量分 75
micx0124
hello world
展开
-
Linux IO 复用
首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。不管是文件,还是套接字,还是管道,我们都可以把他们看作流。之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要从socket读如数据,但是服务器还没有转载 2013-08-26 14:07:39 · 558 阅读 · 0 评论 -
TCP非阻塞accept和非阻塞connect
非阻塞accept 当一个已完成的连接准备好被accept的时候,select会把监听socket标记为可读。因此,如果用select等待外来的连接时,应该不需要把监听socket设置为非阻塞模式,因为如果select告诉我们连接已经就绪,accept就不应该被阻塞。不过这样做的时候有一个BUG:当客户端在跟服务器建立连接之后发送了一个RST包,这个时候accept就会阻塞,直到有下一个转载 2013-10-15 10:29:32 · 687 阅读 · 0 评论 -
非阻塞(nonblock)socket接口会否出现EINTR错误
对于socket接口(指connect/send/recv/accept..等等后面不重复,不包括不能设置非阻塞的如select),在阻塞模式下有可能因为发生信号,返回EINTR错误,由用户做重试或终止。 但是,在非阻塞模式下,是否出现这种错误呢? 对此,重温了系统调用、信号、socket相关知识,得出结论是:不会出现。 首先, 1.信号的处理是在用户态下进行的,也就是必须转载 2013-10-09 16:29:34 · 652 阅读 · 0 评论 -
ZMQ性能测试
zeromq是啥玩意儿?通俗地说,ZMQ是一个开源的、跨语言的、非常简洁的、非常高性能、非常灵活的网络通讯库。它的官方网址为http://www.zeromq.org/它的性能非常高,下面是网友给出的几款常用消息中间件性能比较:性能测试我一直很好奇zeromq真的能跑出那么高的性能来吗?从上面网友给出的性能图看来,这个性能简直逆天了。俗话说好奇害死猫,我就是怀着这个好奇写了转载 2013-09-16 21:50:09 · 865 阅读 · 0 评论 -
SYN Cookie原理及其在Linux内核中的实现
概述在目前以IPv4为支撑的网络协议上搭建的网络环境中,SYN Flood是一种非常危险而常见的DoS攻击方式。到目前为止,能够有效防范SYN Flood攻击的手段并不多,而SYN Cookie就是其中最著名的一种。SYN Cookie原理由D. J. Bernstain和 Eric Schenk发明。在很多操作系统上都有各种各样的实现。其中包括Linux。本文就分别介绍一下SYN Flood转载 2013-09-30 14:36:06 · 1414 阅读 · 0 评论 -
多进程服务器中,epoll的创建应该在创建子进程之后
看我的测试代码,似乎应该是在创建子进程之后创建epoll的fd,否则程序将会有问题,试将代码中两个CreateWorker函数的调用位置分别调用,一个在创建epoll fd之前,一个在之后,在调用在创建之前的代码会出问题,在我的机器上(linux内核2.6.26)表现的症状就是所有进程的epoll_wait函数返回0, 而客户端似乎被阻塞了:服务器端:#include #inclu转载 2013-09-29 14:06:10 · 413 阅读 · 0 评论 -
套接字类型 - socket type
1、数据流套接字(Stream Socket)数据流式是一种面向连接的Socket,针对于面向连接的TCP服务应用,使用使用比较高质量的TCP协议。它有以下一些特点:(1) TCP提供可靠的连接。当TCP向另外一端发送数据时,它要求对方返回一个确认回答。如果没有收到确认,则会等待一段时间后重新发送,在数次重发失败后,TCP才会放弃发送。(2) TCP为发送的数据进行排序。比转载 2013-09-30 13:48:53 · 2592 阅读 · 0 评论 -
如何将所有的进程运行在一个指定的CPU上
这是CU上的一个问题... from: http://bbs.chinaunix.net/viewthread.php?tid=2330394 在SMP上,想把所有的用户 态进程运行在一个CPU上,腾出其它CPU干其它事。Linux能通过简单的配置实现吗?而不是去修改内核代码。 回复:Linux 内核 API 提供了一些方法,让用户可以修改位掩码或查看当前的位转载 2013-09-13 22:05:15 · 496 阅读 · 0 评论 -
nginx 高并发配置参数
一、一般来说nginx 配置文件中对优化比较有作用的为以下几项:1. worker_processes 8;nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8)。2. worker_cpu_affinity 00000001 0000001000000100 00001000 00010000 00100000 01000000 10000转载 2013-09-13 18:44:16 · 456 阅读 · 0 评论 -
Linux下基于socket多线程并发通信的实现 阻塞
/*************************************************** * 文件名:pthread_server.c * 文件描述:创建子线程来接收客户端的数据 ***************************************************/#include #include #include转载 2013-08-31 16:28:07 · 520 阅读 · 0 评论 -
高并发的epoll+多线程
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAX转载 2013-08-31 14:13:49 · 623 阅读 · 0 评论 -
socket 总结
http://www.cnblogs.com/ggjucheng/archive/2012/08/18/2645324.html转载 2013-08-26 14:46:00 · 376 阅读 · 0 评论 -
socket端口数量限制问题
linux socket使用16bit无符号整型表示端口号,最大到65535。关于端口号,有一个经典的误解就是,因为端口号有限,所以一个客户端最多建立65536个socket连接,但实际上并不是这么回事,端口是可以复用的。 一个socket连接是一个[srcip, srcport, destip, destport]组成的四元组,如果再算上协议(tcp、udp、rawsocket等)就是五转载 2013-08-29 10:50:17 · 1348 阅读 · 0 评论 -
socket 错误相关
1. 打开文件数最多1024ulimit -a 查看 open files (-n) 1024可以通过 ulimt -n 10000 命令修改修改上述限制的最简单的办法就是使用ulimit命令:[speng@as4 ~]$ ulimit -n 上述命令中,在中指定要设置的单一进程允许打开的最大文件数。如果系统回显类似于“Operation notpermitted”原创 2013-08-28 12:45:48 · 496 阅读 · 0 评论 -
socketpair 进程间传递描述符
我们知道父进程在子进程被fork出来之前打开的文件描述符是能被子进程继承下来的,但是一旦子进程已经创建后,父进程打开的文件描述符要怎样才能传递给子进程呢?Unix提供相应的技术来满足这一需求,这就是同一台主机上进程间的文件描述符传递,很美妙而且强大的技术。 想象一下我们试图实现一个服务器,接收多个客户端的连接,我们欲采用多个子进程并发的形式来处理多客户端的同时连接,这时候我们可能有两种想转载 2013-10-15 10:22:18 · 1042 阅读 · 0 评论