socket编程
文章平均质量分 84
骑猪去兜风..
无
展开
-
socket编程(一)
什么是socket1.socket可以看成是用户进程与内核网络协议栈的编程接口。2.socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。当一台主机的应用程序想发给另一台主机的应用程序,这时候的数据实际上是从下到上,再从上到下的一个过程。但是从逻辑上可以看成双方是进行对等通信的(Application和Application定义了一个逻辑链路进行数据通讯)...原创 2018-05-20 11:07:41 · 398 阅读 · 0 评论 -
TCP11种状态
TCP11种状态图CLOSED:初始状态,表示TCP连接是“关闭着的”或“未打开的”。LISTEN:表示服务器端的某个SOCKET处于监听状态,可以接受客户端的连接。SYN_RCVD:表示服务器接收到了来自客户端请求连接的SYN报文。在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat很难看到这种状态...原创 2018-09-03 10:48:08 · 18500 阅读 · 1 评论 -
recv、send以及readv、writev函数
recv、send函数原型#include <sys/socket.h>ssize_t recv(int sckfd,void *buff,size_t nbytes,int flags);ssize_t send(int sckfd,const void *buff,size_t nbytes,int flags);这两个 函数类似标准的read和write函数,...原创 2018-09-02 21:42:14 · 1405 阅读 · 0 评论 -
点对点聊天程序的实现
服务端#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <signal.h>#include <stdlib.h&g原创 2018-09-02 19:54:57 · 1575 阅读 · 0 评论 -
简单线程池实现
目标1.用于执行大量相对短暂的任务2.当任务增加的时候能够动态的增加线程池中线程的数量值到达一个阈值3.当任务执行完毕的时候,能够动态的销毁线程池中的线程4.该线程池的实现本质上也是生产者与消费者模型的应用。生产者线程向任务队列添加任务,一旦队列有任务到来,如果有等待 线程就唤醒来执行任务,如果没有等待线程并且线程数没有达到阈值,就创建线程来执行任务。线程池拥有若...原创 2018-07-23 21:49:08 · 226 阅读 · 0 评论 -
Unix域套接字
Unxi域套接字并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法,所用API就是在不同主机上执行客户/服务器通信所用的API。可以视为IPC方法之一。UNix域提供两类套接字:字节流套接字(类似TCP),数据报套接字(类似UDP)UNIX域协议特点:1.Unix域套接字往往比通信两端位于同一主机的TCP套接字快出一倍。X Window System发挥了Unix域套...原创 2018-07-23 15:23:40 · 3472 阅读 · 0 评论 -
socket中的epoll及I/O复用总结
select的限制1.一个进程能打开的最大文件描述符是有限的2.FD_SETSIZE(fd_set)限制,select内部使用一个数据结构fd_set,它的容量最大不能超过FD_SETSIZE。poll的限制一个进程能打开的最大文件描述符是有限的上面的进程能打开的最大文件描述符的个数可通过命令ulimit -n number更改,但也不是无限大,还受到系统所能打开的最大文件描述...原创 2018-06-12 20:20:36 · 2843 阅读 · 0 评论 -
基本UDP套接字编程
UDP特点1.无连接,UDP协议并没有维护端到端的连接状态,而TCP是基于连接的。2.基于消息的传输服务,不存在粘包问题,我们可以认为这些数据报之间是有边界的。3.不可靠,包括丢失、重复、乱序、缺乏流量控制。4.一般情况下UDP更加高效UDP客户/服务器基本模型UDP客户/服务器基本模型客户端代码#include <unistd.h>#include <sys/types.h&...原创 2018-05-23 14:25:59 · 354 阅读 · 0 评论 -
sockct编程中的select函数和poll函数使用详解
select函数单进程实现并发,该函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定的时间后才唤醒它。函数原型#include <sys/select.h>#include <sys/time.h>int select(int maxfdp1,fd_set *readset,fd_set *writeset,fd_...原创 2018-05-22 18:57:07 · 763 阅读 · 0 评论 -
socket编程(二)
基本TCP客户/服务器程序的套接字函数socket函数头文件:<sys/socket.h>功能:创建一个套接字用于通信原型:int socket(int family,int type,int protocol);参数:family:指定通信协议族type:指定套接字类型,流式套接字SOCK_STREAM,数据报套...原创 2018-05-21 22:17:13 · 377 阅读 · 0 评论 -
tcp中粘包的产生以及处理
流协议与粘包这么说吧,TCP在传输数据的时候,是不区分边界的(数据和数据之间没有边界),因为是基于字节流,字节流是由字节组成,不包含边界数据的连续流。所以数据对TCP来说就是一大堆没有结构区别的字节块。那意味着什么?意味着TCP并不能对多个数据的整体的信息进行区分(打个比方:就像是你说一堆话没有标点符号全部连在一起,别人很可能弄错)或者对单个整体信息的错误区分(比如你要发送的整块数据被分成...原创 2018-05-21 19:31:38 · 955 阅读 · 0 评论 -
UDP回射客户/服务器
UDP特点1.无连接,TCP是基于连接的,在连接的时候需要进行三次握手2.基于消息的数据传输服务,TCP是基于流的数据传输服务,会有粘包问题的产生3.不可靠,表现在数据包可能会丢失、重复、乱序、缺乏流量控制4.一般情况下UDP更加高效。 UDP客户/服务基本模型recvfrom和sendto函数#include<sys/socket.h>ssize...原创 2018-09-03 20:58:03 · 365 阅读 · 0 评论