网络编程
文章平均质量分 66
智数云
人工智能,终端设备从业着
展开
-
C语言网络编程实现组播(多播)
因为网卡可能接收到主机不想接收的多播数据帧,如下图,假如主机 1 加入的多播为 224.128.64.32,主机 2 加入的多播为 224.0.64.32,我们想给 224.0.64.32 所在的多播组 ( 主机 2 ) 发送信息,数据经过网卡时,224.128.64.32 (主机 1 ) 和 224.0.64.32 (主机 2 ) 所在多播组的网卡都会收到数据,因为它们的 MAC 地址都是 01:00:5e:00:40:20。/*设置多播IP地址*//*设置多播端口*//*初始化IP多播地址为0*/原创 2023-08-30 16:14:09 · 1454 阅读 · 0 评论 -
C语言网络编程实现广播
因为广播的数据包比较特殊,他的目的mac地址全是f(ff:ff:ff:ff:ff:ff) 这个数据包会发给交换机,交换机是工作在链路层的,交换机看到这样目的mac全是f的数据包,就会将该数据包发给局域网内的所有主机。到达网络层一看IP地址是广播的IP地址,则可以通过。以192.168.1.0 (255.255.255.0) 网段为例,最大的主机地址192.168.1.255代表该网段的广播地址(具体以ifconfig 命令查看到的 broadcast 后面的为准)发到该地址的数据包被所有的主机接收。原创 2023-08-29 15:11:09 · 736 阅读 · 0 评论 -
基于tcp的一个服务器对应多个客户端的连接
1、服务端#include <stdlib.h>#include <sys/types.h>#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>#include <unistd.h>原创 2018-09-01 17:35:43 · 9303 阅读 · 0 评论 -
网络函数send sendto recv recvfrom write read
1、send头文件#include < sys/socket.h >定义函数ssize_t send (int s,const void *msg,size_t len,int flags);参数说明第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程式要发送数据的缓冲区;第三个参数指明实际要发送的数据的字符数;第四个参数一般置0。函数说明...原创 2018-08-21 21:15:21 · 1050 阅读 · 0 评论 -
linux网络编程 select()函数
函数原型:#include <sys/select.h>int select( int nfds, fd_set FAR* readfds, fd_set * writefds, fd_set * exceptfds, const struct timeval * timeout); nfds:是一个整数值,是指集合中所有文件描述符的范围,即所有文件描述符的最大值加1...原创 2016-12-16 15:13:11 · 631 阅读 · 0 评论 -
tcp send 函数导致进程退出
1、在linux下写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号。这个信号的缺省处理方法是退出进程。因此我的处理方法很简单,重新定义这个信号的处理方式,使用:void signal_func() { }signal(SIGPIPE,signal_func);这样程序就不会退出了2、在linux下se...原创 2018-08-19 10:47:07 · 2343 阅读 · 0 评论 -
gethostbyname()
功能:用域名或主机名获取IP地址包含头文件#include #include 函数原型struct hostent *gethostbyname(const char *name);这个函数的传入值是域名或者主机名,例如"www.google.cn"等等。传出值,是一个hostent的结构。如果函数调用失败,将返回NULL。返回hostent结构体类型指原创 2017-05-25 11:59:44 · 343 阅读 · 0 评论 -
Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip 、获取本地主机的名字
struct ifreq{ #define IFHWADDRLEN 6 union { char ifrn_name[IFNAMSIZ]; } ifr_ifrn; union { struct sockaddr ifru_addr; struct sockaddr ifru_dstaddr; struct sockaddr ifru_broa转载 2017-05-25 11:38:51 · 1326 阅读 · 0 评论 -
结构体struct sockaddr_in, struct sockaddr,struct in_addr
struct sockaddr {unsigned short sa_family; /* 地址族, AF_xxx */char sa_data[14]; /* 14字节的协议地址*/};上面是通用的socket地址,具体到Internet socket,用下面的结构,二者可以进行类型转换struct sockaddr_in {sh转载 2017-05-25 14:42:21 · 510 阅读 · 0 评论 -
setsockopt()函数
#include <winsock.h>int PASCAL FAR setsockopt( SOCKET s, int level, int optname,const char FAR* optval, int optlen);s: 标识一个套接口的描述字。level: 选项定义的层次;目前仅支持SOL_SOCKET和IPPROTO_TC...转载 2017-01-16 10:21:14 · 453 阅读 · 0 评论 -
网络编程之套接字UDP
UDP是用户数据报协议,它是一种无连接的传输层协议,提供面向事物的简单不可靠信息传送服务,所以在一些网络质量不满意的环境下,UDP 协议数据包丢失会比较严重,会造成数据的丢失。UDP 的特点是他不属于连接型协议,所以资源消耗小。处理速度快的优点,所以通常音频,视频和普通数据在传送时使用 UDP 较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。UDP 的通信框图如下图所示:...原创 2017-01-07 22:31:39 · 444 阅读 · 0 评论 -
网络编程之格式转换
1、Linux环境下使用以下4个函数进行字节序之间的转换,其函数原型如下#include<arpa/inet.h>uint32_t htonl(uint32_t hostint32);uint16_t htons(uint16_t hostint16);uint32_t ntohl(uint32_t netint32);uint16_t ntohs(uint1...原创 2017-01-07 21:00:18 · 596 阅读 · 0 评论 -
网络编程之套接字TCP
TCP是一种面向连接的、可靠的、基于 IP 的传输层协议。通过 TCP 可以保证我们传送的数据的正确性。Linux 下网络通信程序基本上都是采用 socket 的方式。socket 起源于 Unix,而 Unix/Linux 基本哲学之一就是“一切皆文件” ,都可以用“打开 open->读写 read/write->关闭 close”模式来操作。Socket 就是该模式的一个实现...原创 2017-01-07 22:06:05 · 426 阅读 · 0 评论