前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言socket[通俗易懂]

C语言socket[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-14 10:30:25
6680
发布2022-09-14 10:30:25
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

2 .相关api介绍a socket函数:

对创建套接字(的方法进行说明。

#include sys/socket.h

intsocket(intaf、int type、int protocol );

af :地址的说明。 仅支持AF_INET格式,即ARPA互联网地址格式。

类型:指定套接字类型。 新套接字的类型描述类型,如TCP(sock_stream )或UDP (sock _ dgram )。 常用的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等。

协议:顾名思义,就是指定协议。 用于接口的协议。 如果不想指定调用方,可以使用0。 经常使用的协议是IPPROTO_TCP、IPPROTO_UDP、IPPROTO_STCP、IPPROTO_TIPC等,分别是TCP传输协议、UDP传输协议、STCP传输协议

b bind函数:

intbind(intsockfd,常数结构sockaddr * addr,

socklen_t addrlen;

c listen函数:

intlisten(intsockfd,int backlog );

d accept函数

intaccept(intsockfd,struct sockaddr *addr,socklen_t *addrlen );

3 .套接字服务端创建步骤1、创建套接字,函数套接字();

2、设置socket属性,使用函数setsockopt (;

3、在套接字上绑定IP地址、端口等信息,函数bind ();

4、打开监听,函数listen ();

5、接收客户端连接,函数accept ();

6、收发数据,函数send (和recv )或read ) )和write );

4 .创建套接字客户端步骤1、创建套接字,单击函数套接字(

2、设置socket属性,使用函数setsockopt (;

3、在套接字上绑定IP地址、端口等信息,函数bind ();

4、设置连接对象的IP地址和端口等属性

5、连接服务器,函数connect ();

6、收发数据,函数send (和recv )或read ) )和write );

函数

bzero() 能够将内存块(字符串)的前n个字节清零,在”string.h”头文件中,原型为: void bzero(void *s, int n);

【参数】s为内存(字符串)指针,n 为需要清零的字节数。 bzero()将参数s 所指的内存区域前n 个字节全部设为零。


inet_aton(将网络地址转成网络二进制的数字) 相关函数 inet_addr,inet_ntoa 表头文件 #include<sys/scoket.h> #include<netinet/in.h> #include<arpa/inet.h> 定义函数 int inet_aton(const char * cp,struct in_addr *inp); 函数说明 inet_aton()用来将参数cp所指的网络地址字符串转换成网络使用的二进制的数字,然后存于参数inp所指的in_addr结构中。 结构in_addr定义如下 struct in_addr {

unsigned long int s_addr; }; 返回值 成功则返回非0值,失败则返回0。


下面是 signal() 函数的声明。

void (*signal(int sig, void (*func)(int)))(int) 参数 sig – 在信号处理程序中作为变量使用的信号码。下面是一些重要的标准信号常量: 宏 信号 SIGABRT (Signal Abort) 程序异常终止。 SIGFPE (Signal Floating-Point Exception) 算术运算出错,如除数为 0 或溢出(不一定是浮点运算)。 SIGILL (Signal Illegal Instruction) 非法函数映象,如非法指令,通常是由于代码中的某个变体或者尝试执行数据导致的。 SIGINT (Signal Interrupt) 中断信号,如 ctrl-C,通常由用户生成。 SIGSEGV (Signal Segmentation Violation) 非法访问存储器,如访问不存在的内存单元。 SIGTERM (Signal Terminate) 发送给本程序的终止请求信号。 func – 一个指向函数的指针。它可以是一个由程序定义的函数,也可以是下面预定义函数之一: SIG_DFL 默认的信号处理程序。 SIG_IGN 忽视信号。 返回值 该函数返回信号处理程序之前的值,当发生错误时返回 SIG_ERR。


htons(将16位主机字符顺序转换成网络字符顺序) 相关函数 htonl,ntohl,ntohs 表头文件 #include<netinet/in.h> 定义函数 unsigned short int htons(unsigned short int hostshort); 函数说明 htons()用来将参数指定的16位hostshort转换成网络字符顺序。 返回值 返回对应的网络字符顺序。


设置套接字的选项。 #include <sys/socket.h> int setsockopt(int s,int level,int optname, const char *optval,int optlen); s:标识一个套接字的描述符。 level:选项定义的层次;目前仅支持SOL_SOCKET和IPPROTO_TCP层次。 optname:需设置的选项。 optval:指针,指向存放选项值的缓冲区。 optlen:optval缓冲区长度。


发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158468.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年7月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档