网络通信
LQJW
这个作者很懒,什么都没留下…
展开
-
UDP
1、ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);功能:UDP协议专用的数据发送函数sockfd:套接字描述符buf:待发送的缓冲区首地址len:待发送的数据字节数flags:0阻塞,1不阻塞...原创 2019-10-17 20:35:43 · 119 阅读 · 0 评论 -
linux下高并发服务器实现
在做网络服务的时候tcp并发服务端程序的编写必不可少。tcp并发通常有几种固定的设计模式套路,他们各有优点,也各有应用之处。下面就简单的讨论下这几种模式的差异:单进程,单线程在accept之后,就开始在这一个连接连接上的数据收接收,收到之后处理,发送,不再接收新的连接,除非这个连接的处理结束。优点: 简单。缺点: 因为只为一个客户端服务,所以不存在并发的可能。应...转载 2019-10-17 16:44:29 · 206 阅读 · 0 评论 -
TCP之多线程
多线程服务器是对多进程服务器的改进,由于多进程服务器在创建进程时要消耗较大的系统资源,所以用线程来取代进程,这样服务处理程序可以较快的创建。据统计,创建线程比创建进程要快 10100 倍,所以又把线程称为“轻量级”进程。线程与进程不同的是:一个进程内的所有线程共享相同的全局内存、全局变量等信息,这种机制又带来了同步问题。我们在使用多线程并发服务器时,直接使用以上框架,我们仅仅修改clien...转载 2019-10-17 16:35:51 · 2605 阅读 · 1 评论 -
TCP之多进程
pid_t fork(void);功能:创建一个新进程返回值:一次调用两次返回,失败返回-1//client.c#include <stdio.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h...原创 2019-10-17 11:59:19 · 144 阅读 · 0 评论 -
TCP
1、int listen(int sockfd, int backlog);功能:设置等待连接的最大数量sockfd:被监听的socket描述符backlog:等待连接的最大数量(排队的数量)成功返回0 失败-12、int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);功能:等待sockfd...原创 2019-10-15 20:35:22 · 108 阅读 · 0 评论 -
本地通信
1、创建socket#include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol);功能:创建socket描述符,可以把socket当作文件来看待,发送数据就是写文件,接收数据就是读文件domain:地址文件...原创 2019-10-15 15:54:54 · 650 阅读 · 0 评论 -
UDP主要丢包原因及具体问题分析
一、主要丢包原因1、接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv。2、发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行。例如超过50K的一个udp包,不切割直接通过sen...转载 2019-10-15 14:44:05 · 1150 阅读 · 0 评论