bind函数要求的地址类型是((struct sockaddr *)&adr_inet意思)

:暂无数据 2026-07-26 19:30:02 :2

bind函数要求的地址类型是((struct sockaddr *)&adr_inet意思)

其实bind函数要求的地址类型是的问题并不复杂,但是又很多的朋友都不太了解(struct sockaddr *)&adr_inet意思,因此呢,今天小编就来为大家分享bind函数要求的地址类型是的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

(struct sockaddr *)&adr_inet意思

1楼那位大哥你就不要误人子弟了。。。
这个显然是 socket编程中的。。。
首先&addr_inet 是取addr_inet的地址, 因为addr_inet的指针类型是sockaddr_in * 的 ,而 bind函数第二个参数需要 sockaddr * 的,所以只是一个指针类型转换罢了。
什么叫做地址只是个值不用转换啊。 那你float 也是个值,int 也是个值, 那为什么会有float 转换成int 型呢?

socket的bind函数是不是只能绑定本地IP,不能绑定外网IP么

不是这样的, 它绑定你给它的IP (不分内外网),如果你的程序在服务器端(服务器必须有一个固定的IP)运行,你的代码读取本机IP时 就是那个固定IP了

c++开启一个简单的http响应

#include《stdio.h》

#include《winsock2.h》

#pragma comment(lib,"ws2_32.lib)

#define HTTP_PORT 8080

#define HTTP_BUFFER_SIZE 2048

#define HTTP_FILENAME_LEN   256

struct doc_type//定义文件类型

{

char *suffix;

char *type;

};

struct doc_type file_type=

{

  {"html",    "text/html"  },

    {"gif",     "image/gif"  },

    {"jpeg",    "image/jpeg" },

    { NULL,      NULL        }

};

/**************************************************************************

 *

 * 函数功能: 根据文件后缀查找对应的 Content-Type.

 *

 * 参数说明:  suffix, 文件名后缀;

 *

 * 返 回 值: 成功返回文件对应的 Content-Type, 失败返回 NULL.

 *

 **************************************************************************/

c

***隐藏网址***

{

struct doc_type *type;

for(type=file_type;type-》suffix;type++)

{

if(strcmp(type-》suffix,suffix)==0)

return type-》type;

}

return null;

}

/**************************************************************************

 *

 * 函数功能: 解析请求行, 得到文件名及其后缀. 请求行格式:

***隐藏网址***

 *

 * 参数说明:   buf, 字符串指针数组;

 *             buflen, buf 的长度;

 *            file_name, 文件名;

 *            suffix, 文件名后缀;

 *

 * 返 回 值: void.

 *

 **************************************************************************/

void heet_parse_request_cmd(char *buffer,int buflen,char *filename,char *suffix)

{

int length=0;

char *begin,*end,*bias;

begin=strchr(buf,’ ’);

begin+=1;

end=strchr(begin,’ ‘);

*end=0;

bias=strrchr(begin,’/’);

length=end-bias;

if((*bias==’/’)||(*bias==’\\’))

{

bias++;

length--;

}

/* 得到文件名 */

    if (length 》 0)

    {

        memcpy(file_name, bias, length);

        file_name = 0;

        begin = strchr(file_name, ’.’);

        if (begin)

            strcpy(suffix, begin + 1);

    }

}

/**************************************************************************

 *

 * 函数功能: 向客户端发送 HTTP 响应.

 *

 * 参数说明:   buf, 字符串指针数组;

 *             buf_len, buf 的长度;

 *

 * 返 回 值: 成功返回非0, 失败返回0.

 *

 **************************************************************************/

***隐藏网址***

{

int read_len,file_len,hdr_len,send_len;

char *type;

char read_buf;

***隐藏网址***

char file_name="html";

FILE *res_file;

  /* 得到文件名和后缀 */

***隐藏网址***
res_file = fopen(file_name, "rb+"); /* 用二进制格式打开文件 */

    if (res_file == NULL)

    {

        printf(" is not existed\n", file_name);

        return 0;

    }

/* 构造 HTTP 首部,并发送 */

***隐藏网址***

***隐藏网址***

    if (send_len == SOCKET_ERROR)

    {

        fclose(res_file);

        printf(" Fail to send, error = %d\n", WSAGetLastError());

        return 0;

    }

    do /* 发送文件, HTTP 的消息体 */

    {

        read_len = fread(read_buf, sizeof(char), HTTP_BUF_SIZE, res_file);

        if (read_len 》 0)

        {

            send_len = send(soc, read_buf, read_len, 0);

            file_len -= read_len;

        }

    } while ((read_len 》 0) && (file_len 》 0));

    fclose(res_file);
    return 1;

}
Int main()

{

WSADATA  wsa_data;

SOCKET srv_soc,acpt_soc;

struct sockaddr_in serv_addr;

struct sockaddr_in from_addr;   /* 客户端地址  */

 char recv_buf;

  unsigned short port = HTTP_DEF_PORT;

  unsigned long from_len = sizeof(from_addr);

   int result = 0, recv_len;

 if (argc == 2) /* 端口号 */

        port = atoi(argv);

WSAStartup(MAKEWORD(2,0), &wsa_data); /* 初始化 WinSock 资源 */

 srv_soc = socket(AF_INET, SOCK_STREAM, 0); /* 创建 socket */AF的意思是IP4 sock是使用sock流。0是不指定TCP还是udp。根据情况而定

 if (srv_soc == INVALID_SOCKET)

    {

        printf(" socket() Fails, error = %d\n", WSAGetLastError());

        return -1; 

    }

 /* 服务器地址 */

    serv_addr.sin_family = AF_INET;

    serv_addr.sin_port = htons(port);TCP采用大端传输的方式。这个函数就是实现大端。高字节在低地址。

    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);

将主机数转换成无符号长整型的网络 字节顺序 。本函数将一个32位数从主机字节顺序转换成网络字节顺序。

result = bind(srv_soc, (struct sockaddr *) &serv_addr, sizeof(serv_addr));

bind函数把一个本地的协议地址赋予一个套接字,对于网际协议。协议地址是32位de ip4或者128位的ip6与16位的tcp或者udp端口的组合。

 if (result == SOCKET_ERROR) /* 绑定失败 */

    {

        closesocket(srv_soc);

        printf(" Fail to bind, error = %d\n", WSAGetLastError());

        return -1; 

    }

 result = listen(srv_soc, SOMAXCONN);//SOMAXCONN限制系统中监听该端口的最大连接数。保存的是完成三次握手、等待accept的全连接,而不是半连接。

    printf(" The server is running ... ...\n");

 while (1)

    {

        acpt_soc = accept(srv_soc, (struct sockaddr *) &from_addr, &from_len);

        if (acpt_soc == INVALID_SOCKET) /* 接受失败 */

        {

            printf(" Fail to accept, error = %d\n", WSAGetLastError());

            break; 

        }

        printf("\n", 

            inet_ntoa(from_addr.sin_addr), ntohs(from_addr.sin_port));

        recv_len = recv(acpt_soc, recv_buf, HTTP_BUF_SIZE, 0);

        if (recv_len == SOCKET_ERROR) /* 接收失败 */

        {

            closesocket(acpt_soc);

            printf(" Fail to recv, error = %d\n", WSAGetLastError());

            break; 

        }

        recv_buf = 0;

        /* 向客户端发送响应数据 */

***隐藏网址***

        closesocket(acpt_soc);

    }

  closesocket(srv_soc);

    WSACleanup();

    printf(" The server is stopped.\n");

    return 0;

}

***隐藏网址***

文章分享结束,bind函数要求的地址类型是和(struct sockaddr *)&adr_inet意思的答案你都知道了吗?欢迎再次光临本站哦!

bind函数要求的地址类型是((struct sockaddr *)&adr_inet意思)

本文编辑:admin

更多文章:


给虚拟机提供操心系统的是哪个组件(以下哪些是云服务器ecs产品组件)

给虚拟机提供操心系统的是哪个组件(以下哪些是云服务器ecs产品组件)

本篇文章给大家谈谈给虚拟机提供操心系统的是哪个组件,以及以下哪些是云服务器ecs产品组件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年11月7日 23:30

网页注册界面(怎样在网页中制作注册和登录界面谢谢了,大神帮忙啊)

网页注册界面(怎样在网页中制作注册和登录界面谢谢了,大神帮忙啊)

大家好,网页注册界面相信很多的网友都不是很明白,包括怎样在网页中制作注册和登录界面谢谢了,大神帮忙啊也是一样,不过没有关系,接下来就来为大家分享关于网页注册界面和怎样在网页中制作注册和登录界面谢谢了,大神帮忙啊的一些知识点,大家可以关注收藏

2026年11月7日 22:50

apache是干嘛的(apache http server 和 tomcat是什么关系)

apache是干嘛的(apache http server 和 tomcat是什么关系)

各位老铁们好,相信很多人对apache是干嘛的都不是特别的了解,因此呢,今天就来为大家分享下关于apache是干嘛的以及apache http server 和 tomcat是什么关系的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一

2026年11月7日 22:00

动画效果设置(ppt图片动画效果怎么设置)

动画效果设置(ppt图片动画效果怎么设置)

本篇文章给大家谈谈动画效果设置,以及ppt图片动画效果怎么设置对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年11月7日 18:00

正则表达式015怎么写(// 最大,最小值1-15如何用正则写出来)

正则表达式015怎么写(// 最大,最小值1-15如何用正则写出来)

这篇文章给大家聊聊关于正则表达式015怎么写,以及// 最大,最小值1-15如何用正则写出来对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年11月7日 16:40

marginhtml(html用了浮动就不能使用margin了吗)

marginhtml(html用了浮动就不能使用margin了吗)

这篇文章给大家聊聊关于marginhtml,以及html用了浮动就不能使用margin了吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年11月7日 15:50

美国历届总统活着的?美国历任总统的名字

美国历届总统活着的?美国历任总统的名字

各位老铁们,大家好,今天由我来为大家分享美国前总统,以及美国历届总统活着的的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年11月7日 15:30

自媒体标题生成器(一键生成简短宣传标语的工具)

自媒体标题生成器(一键生成简短宣传标语的工具)

大家好,关于自媒体标题生成器很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于一键生成简短宣传标语的工具的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年11月7日 12:40

shell键在哪(xshell如何设置快捷键)

shell键在哪(xshell如何设置快捷键)

“shell键在哪”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看shell键在哪(xshell如何设置快捷键)!

2026年11月7日 11:40

linux环境变量查看(怎么查看修改linux用户当前的环境变量)

linux环境变量查看(怎么查看修改linux用户当前的环境变量)

其实linux环境变量查看的问题并不复杂,但是又很多的朋友都不太了解怎么查看修改linux用户当前的环境变量,因此呢,今天小编就来为大家分享linux环境变量查看的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年11月7日 11:10

最近更新

thinkpad e145(thinkpad E145大小写提示不见了)
2026-11-08 00:20:03 浏览:0
热门文章

新站如何通过网站维护提升SEO排名
2026-10-13 20:56:21 浏览:6
标签列表