Linux C网络编程
ZJE_ANDY
这个作者很懒,什么都没留下…
展开
-
(二)UDP广播
广播地址有两种:一。受限广播地址:255.255.255.255,但不能通过路由器,只能被当前子网的主机收到二。直接广播如:192.168.1.255 表示网段在 192.168.1.x 的主机都能收到,而且直接广播能通过路由器,例如,192.168.1.100的主机能发送广播给 192.168.2.x 的所有主机但路由器一般默认是也是禁止直接广播的,但可以设置位不阻止原创 2017-01-05 15:19:10 · 1405 阅读 · 0 评论 -
(五)epoll实现TCP服务端
1.epoll是由poll改进而来的。2.epoll跟poll在编程实现上有一定程度相似。3.epoll主要通过结构体 epoll_event 来实现监听。(!!!!!!不想看原理的可以直接拉到后面看代码!!!!!)//epoll_event结构体struct epoll_event{ uint32_t events; /* E原创 2017-01-03 23:51:44 · 1356 阅读 · 0 评论 -
(四) 用poll实现TCP服务端
1.首先,大概说一下poll函数的工作大概:(包含在#include当中) poll 是通过监听一个结构体变量来对 文件描述符进行监听的(当然,socket也算是一个文件描述符) 这个结构体的大概结构是: (!!如果不想了解poll工作原理的。可以直接拉下去看代码)struct pollfd //这个结构体一般会被定义为结构体数组{原创 2017-01-03 10:14:48 · 2639 阅读 · 0 评论 -
(三)TCP用select函数处理多个客户端连接(非阻塞模式)
这个程序,客户端们通过服务器进行群聊。主要讲讲两点:1.怎么弄非阻塞模式 。 2.select的粗略讲解(心急的可以跳过,直接看后面代码)首先,看看这个程序服务端设计的基本逻辑,其实非常简单,就在一个while(1)循环里面不停地轮询 accept 和 select函数。有人可能问,accept不是会阻塞,直到有客户端连接进来的吗?其实当你的socket套接字设置成原创 2016-12-26 19:53:42 · 6947 阅读 · 0 评论 -
(二)用多线程管理TCP多个客户端连接服务器
该程序的服务端大概工作逻辑如左图:首先说说这个程序的作用:这个程序可用于多个客户端通过连接服务器来互相通信。如qq群聊。当一个客户端有信息发过来后,服务端就会通过客户端队列转发给其他客户端先上代码://TCP服务端#include"myhead.h"struct client *head = NULL;struct sockaddr_in saddr;struct socka原创 2016-12-25 14:29:28 · 9292 阅读 · 0 评论 -
TCP三次握手,四次挥手过程
ACK:TCP报文格式中的控制位由6个标志比特构成,其中一个就是ACK,ACK为1表示确认号有效,表示发来的数据已确认接收无误。为0表示报文中不包含确认信息,忽略确认号字段。暂时需要的信息有:ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1SYN(SYNchronization) : 在连接建立时用来同步序号。原创 2016-12-24 19:22:32 · 364 阅读 · 0 评论 -
本机与远程linux云服务器的udp通信demo
1.头文件2.服务端程序(在云服务器运行)3.客户端程序(在本机运行)1.头文件#ifndef _MYHEAD_H_#define _MYHEAD_H_#include #include #include #include #include #include #include #include #include #include #include #原创 2017-03-14 15:25:59 · 1664 阅读 · 2 评论 -
(一)UDP基本编程步骤
UDP服务端编程分5步:1.创建 UDP socket套接字,用socket函数。2.设置socket的属性,用setsockopt()函数,(可选)3.往socket绑定包含 IP信息,地址信息的 struct sockaddr_in(IPv4)结构体。用bind()函数4.循环接收消息,用recvfrom()函数5.关闭socket套接字UDP客户端编程分:原创 2017-01-04 13:02:59 · 19705 阅读 · 2 评论 -
(一)linux C语言TCP服务端/客户端简单编程步骤
由上图可知,TCP的服务端 5步就能完成基本功能。TCP客户端 3步就能完成基本功能。接下来上基本代码:具体函数的操作等等再讲。(为了使代码步骤更直观,这里不写错误处理语句)//TCP服务器#include"myhead.h" //在linux下用man可以知道具体函数在什么头文件中,这里用myhead.h代替#define LISTEN_NUM 5int原创 2016-12-24 20:46:36 · 7737 阅读 · 1 评论