当前位置: 首页 > wzjs >正文

网站免费建站k发布企业信息的网站

网站免费建站k,发布企业信息的网站,网站建设分录怎么开,做网站需要提供哪些资料1. bind 函数与描述符 bind 函数用于将一个套接字&#xff08;socket&#xff09;与特定的地址和端口绑定&#xff0c;这样客户端就可以通过该地址和端口找到并连接到服务器。其函数原型如下&#xff1a; #include <sys/socket.h> int bind(int sockfd, const struct so…

1. bind 函数与描述符

   bind 函数用于将一个套接字(socket)与特定的地址和端口绑定,这样客户端就可以通过该地址和端口找到并连接到服务器。其函数原型如下:

#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

  • 参数说明
    • sockfd:是一个套接字描述符,它是通过 socket 函数创建的。socket 函数会返回一个非负整数,作为这个新创建套接字的标识。
    • addr:指向一个 struct sockaddr 类型的结构体,该结构体包含了要绑定的地址和端口信息。
    • addrlen:表示 addr 所指向结构体的长度。

2. accept 函数与描述符

accept 函数用于从监听队列中取出一个客户端的连接请求,并创建一个新的套接字来与该客户端进行通信。其函数原型如下:

#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

  • 参数说明
    • sockfd:同样是一个套接字描述符,它是用于监听客户端连接请求的套接字描述符。
    • addr:指向一个 struct sockaddr 类型的结构体,用于存储客户端的地址信息。
    • addrlen:指向一个 socklen_t 类型的变量,传入时表示 addr 所指向结构体的长度,返回时表示实际存储的客户端地址信息的长度。

3. 二者描述符相同的原因

在服务器端的网络编程流程中,一般会按以下步骤进行操作:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>#define PORT 8888
#define BACKLOG 5int main() {int listen_fd, conn_fd;struct sockaddr_in server_addr, client_addr;socklen_t client_addr_len;// 创建套接字listen_fd = socket(AF_INET, SOCK_STREAM, 0);if (listen_fd == -1) {perror("socket creation failed");return -1;}// 准备服务器地址信息memset(&server_addr, 0, sizeof(server_addr));server_addr.sin_family = AF_INET;server_addr.sin_addr.s_addr = INADDR_ANY;server_addr.sin_port = htons(PORT);// 绑定套接字到指定地址和端口if (bind(listen_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {perror("bind failed");close(listen_fd);return -1;}// 开始监听客户端连接请求if (listen(listen_fd, BACKLOG) == -1) {perror("listen failed");close(listen_fd);return -1;}// 接受客户端连接client_addr_len = sizeof(client_addr);conn_fd = accept(listen_fd, (struct sockaddr *)&client_addr, &client_addr_len);if (conn_fd == -1) {perror("accept failed");close(listen_fd);return -1;}// 后续可以使用 conn_fd 与客户端进行通信// ...// 关闭套接字close(conn_fd);close(listen_fd);return 0;
}

  • 首先,使用 socket 函数创建一个套接字,返回一个套接字描述符 listen_fd
  • 然后,使用 bind 函数将这个套接字描述符 listen_fd 与服务器的地址和端口绑定,这样服务器就可以在该地址和端口上监听客户端的连接请求。
  • 接着,使用 listen 函数将该套接字设置为监听状态,开始监听客户端的连接请求。
  • 最后,使用 accept 函数从监听队列中取出一个客户端的连接请求。这里 accept 函数的第一个参数仍然是 listen_fd,因为它需要知道从哪个监听套接字的队列中取出连接请求。当 accept 函数成功返回时,会创建一个新的套接字描述符 conn_fd,用于与该客户端进行实际的数据通信。

  bind 函数的第一个参数描述符和 accept 函数的第一个参数描述符通常是一样的,它们都指向用于监听客户端连接请求的套接字。而 accept 函数返回的新套接字描述符则用于与具体的客户端进行数据交互。

  这俩个函数返回值的区别

bind函数和accept函数返回值的区别主要体现在含义、取值及错误处理等方面,以下是具体介绍:

返回值含义

  • bind函数:用于将套接字与特定的网络地址和端口号绑定。其返回值表示绑定操作是否成功。
  • accept函数:用于从服务器的连接请求队列中接受一个客户端连接,并创建一个新的套接字来与客户端进行通信。其返回值表示接受连接操作的结果,若成功则返回一个新的套接字描述符,用于与该客户端进行后续的数据交互。

取值情况

  • bind函数:成功时返回 0,表示套接字与指定地址和端口绑定成功,服务器可以开始在该地址和端口上监听连接请求。失败时返回 - 1,同时会设置errno变量来表示具体的错误原因,如EACCES(权限不足,无法绑定到指定端口)、EADDRINUSE(地址已被使用)等。
  • accept函数:成功时返回一个非负整数,即新的套接字描述符,这个新的描述符用于与接受的客户端进行通信,后续可以使用这个描述符进行readwrite等操作来与客户端交换数据。失败时返回 - 1,同时errno会被设置为相应的错误码,如EAGAINEWOULDBLOCK(在非阻塞模式下,没有可用的连接且没有设置超时)、ECONNABORTED(连接被对方中止)等。

错误处理影响

  • bind函数:如果bind失败,通常意味着服务器无法在指定的地址和端口上进行监听,后续的listenaccept操作也就无法正常进行,服务器需要根据错误原因进行相应的处理,如更换端口、检查权限等,然后重新尝试bind操作。
  • accept函数accept失败时,可能只是当前没有可用的连接请求,或者连接出现了一些问题。服务器可以根据错误类型决定是继续等待连接(例如在非阻塞模式下EAGAIN错误时),还是进行一些错误处理和清理操作,而不会影响服务器继续监听新的连接请求。

文章转载自:

http://PuRyI1iI.fktLr.cn
http://rY5x4Nj3.fktLr.cn
http://hXHeuRjk.fktLr.cn
http://UJDve89C.fktLr.cn
http://3VESogUZ.fktLr.cn
http://HdtuIAej.fktLr.cn
http://jE1kqVUx.fktLr.cn
http://aDP6vdx3.fktLr.cn
http://KEhJ6Wyw.fktLr.cn
http://R75p6NWF.fktLr.cn
http://8T9sUoaD.fktLr.cn
http://rYROBAq6.fktLr.cn
http://TEfuTELm.fktLr.cn
http://ILdBdXz7.fktLr.cn
http://HZgdxFNn.fktLr.cn
http://460bJU46.fktLr.cn
http://byWBAEJD.fktLr.cn
http://hz8zl9cx.fktLr.cn
http://zmsvzeL0.fktLr.cn
http://KrsOUAdb.fktLr.cn
http://R38C7mkD.fktLr.cn
http://SrFPOUky.fktLr.cn
http://qbAmJOji.fktLr.cn
http://SKIGy0w7.fktLr.cn
http://GJIFJoND.fktLr.cn
http://WM7xl5F0.fktLr.cn
http://jrFygyCo.fktLr.cn
http://TXUAVSSL.fktLr.cn
http://MU9CTB9h.fktLr.cn
http://yap7iTbR.fktLr.cn
http://www.dtcms.com/wzjs/666818.html

相关文章:

  • 辽源网站优化wordpress 登陆函数
  • 网站设计样例大连网站设计选仟亿科技
  • 中山网站运营在广州注册公司流程和费用
  • 网站建立定位企划全屋定制十大名牌2021
  • 可以做早安图片的网站huntt wordpress
  • 网站建设价格明细设计网站推荐 zoo
  • 找在农村适合的代加工seo关键技术有哪些
  • 手机制作钓鱼网站泉州一个网站多少钱
  • 珠海网站制作首页申请自媒体账号
  • 小白网站搭建教程wordpress 自定义头像
  • 怎么将自己房子投入网站做民宿django网站开发视频教程
  • 如何免费建设一个网站百度商桥怎么嵌入网站
  • 湖北网站设计制作公司有哪些网站开发难吗
  • 陕西交通建设集团蓝商分公司网站如何做淘宝客的网站
  • 网站建设公司的服务网页搜索框记录怎么删除
  • 网站建设方案书应急处置方案网站建设中应注意的问题
  • 广州网站开发债券交微商城app下载
  • 网站在哪做网站建设标语文案
  • 专题网站模板高端的网站建设公司
  • 贵阳市网站优化网站手机版怎么做
  • 做职业装的网站菏泽市建设银行网站
  • 如何用照片做模板下载网站网站设计 布局
  • 自己做的网址危险网站seo教程最新
  • 婚恋网站建设技巧大连高新园区在哪
  • 专门做网站的公司有哪些做微商网站
  • 菏泽兼职网站建设做网站编程在程序
  • 图片展示类网站自己怎样做网站平台
  • 深圳的互联网公司排名绍兴seo
  • 校园资源共享网站建设工程资料外包公司
  • 安徽工程建设信息网站廊坊网站建设多少钱