C语言socket[通俗易懂]

C语言socket[通俗易懂]2.相关api介绍asocket函数:对创建套接字(的方法进行说明。#includesys/socket.hintsocket(intaf、inttype、intprotocol);af:地址的说明。仅支持AF_INET格式,即ARPA互联网地址格式。类型:指定套接字类型。新套接字的类型描述类型,如TCP(sock_stream)或UDP(sock_dgram)。常用的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACK

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

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.net/158468.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c++获取窗口句柄的方法「建议收藏」

    c++获取窗口句柄的方法「建议收藏」1

    2022年7月21日
    13
  • 罗技键盘k380打不了字_罗技k380键盘配对成功后无法使用

    罗技键盘k380打不了字_罗技k380键盘配对成功后无法使用mac连接成功罗技k380键盘,但是发现数字键上面的字符对不上,很多字符以及标点符号都打不出来,是什么原因导致的呢?问题分析首先,分析一下,到底是什么原因导致的?可以连接其他设备试一试,比如我发现k380键盘在我的ipad上是可以正常使用的。那么就排除了键盘本身存在问题,坏了等猜测。如果不是键盘本身出了问题,那么我们就要去分析问题究竟出现在哪里?联系了客服,加上自己对键盘配对过程的回顾,大致判定问题出现在最开始的匹配的时候,选错了【键盘类型】。解决问题-重设【键盘类型】步骤如下:【系统偏好设置

    2022年10月9日
    0
  • C语言整型转字符串_c++整形转字符串

    C语言整型转字符串_c++整形转字符串本文主要介绍在C++编程语言中,将整型转换为字符串类型的具体方法。1使用to_string函数在C++11标准中,可以使用to_string函数,将整型转换为字符串类型。1.1to_string函数介绍to_string函数的用法如下:stringto_string(intval);stringto_string(longval);stringto_string(longlongval);stringto_string(unsigned

    2022年10月18日
    2
  • mediumtext_mysql数据类型介绍(含text,longtext,mediumtext说明) | 学步园[通俗易懂]

    mediumtext_mysql数据类型介绍(含text,longtext,mediumtext说明) | 学步园[通俗易懂]由MySQL支持的列类型列在下面。下列代码字母用于描述中:M指出最大的显示尺寸。最大的合法的显示尺寸是255。D适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30,但是应该不大于M-2。方括号(“[”和“]”)指出可选的类型修饰符的部分。注意,如果你指定一个了为ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性。TINYINT[(M)][UNSIG…

    2022年5月5日
    598
  • linux vim怎么退出编辑模式_centos7退出vi编辑

    linux vim怎么退出编辑模式_centos7退出vi编辑转载自:http://blog.csdn.net/u010648555/article/details/50676647初学Linux的时候,在使用vi操作时候,有时候可能进入的是一个文件夹,这样子在退出的时候很不好操作!下面总结一些vi退出命令,学习!进入编辑模式,按o进行编辑编辑结束,按ESC键跳到命令模式,然后输入退出命令::w保存文件但不退出vi编辑:w!强制保存,不退出v…

    2022年9月29日
    0
  • 通俗易懂讲解均方误差 (MSE)「建议收藏」

    通俗易懂讲解均方误差 (MSE)「建议收藏」测量预测值与某些真实值匹配程度。MSE通常用作回归问题的损失函数。例如,根据其属性估算公寓的价格。这是维基百科中定义的均方误差(MSE)公式。它代表了一个非常简单的概念,但如果您刚开始使用ML,可能不太容易读懂。让我们从内而外拆开包装。MSE计算模型的预测Ŷ与真实标签Y的接近程度。您希望误差变为0。如果您预测房价,误差可能是预测价格与实际价格之间的差异。从标签中减去预测是行不通的。误差可能为负也可能为正,这是对样本求和时的问题。您可以取绝对值或误差的平方。取平方有一个特性,它惩罚更大的

    2022年9月30日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号