首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

C 语言实现一个简单的 web 服务器

socket 可以将数据流送入网络,也可以接收数据流。 socket 的信息交互与本地文件信息的读取表面特征上看类似,但其中所存在的编写复杂度是本地 IO 不能比拟的,但却有相似点。...addrlen ); 参数 socket 表示绑定的 socket,传入 socket 即可;addr 为 sockaddr_in 的结构体变量的指针,在 sockaddr_in 结构体变量配置一些服务器信息...通过 bind 函数原型得知了我们所需要的数据,接下来创建一个 sockaddr_in 结构体变量用于配置服务器信息: struct sockaddr_in server_addr; 随后配置地址家族为...代码为: struct sockaddr_in c_skt; int s_size=sizeof(struct sockaddr_in); int access_skt = accept(skt,...\n"); struct sockaddr_in c_skt; int s_size=sizeof(struct sockaddr_in); int access_skt = accept

1.1K20

C语言实现一个简单的web服务器

socket 可以将数据流送入网络,也可以接收数据流。 socket 的信息交互与本地文件信息的读取表面特征上看类似,但其中所存在的编写复杂度是本地 IO 不能比拟的,但却有相似点。...addrlen ); 参数 socket 表示绑定的 socket,传入 socket 即可;addr 为 sockaddr_in 的结构体变量的指针,在 sockaddr_in 结构体变量配置一些服务器信息...通过 bind 函数原型得知了我们所需要的数据,接下来创建一个 sockaddr_in 结构体变量用于配置服务器信息: struct sockaddr_in server_addr; 随后配置地址家族为...代码为: struct sockaddr_in c_skt;  int s_size=sizeof(struct   sockaddr_in); int access_skt = accept(skt,...\n");   struct sockaddr_in c_skt;    int s_size=sizeof(struct   sockaddr_in);   int access_skt = accept

1.7K2219

C 语言实现一个简单的 web 服务器

socket 可以将数据流送入网络,也可以接收数据流。 socket 的信息交互与本地文件信息的读取表面特征上看类似,但其中所存在的编写复杂度是本地 IO 不能比拟的,但却有相似点。...addrlen ); 参数 socket 表示绑定的 socket,传入 socket 即可;addr 为 sockaddr_in 的结构体变量的指针,在 sockaddr_in 结构体变量配置一些服务器信息...通过 bind 函数原型得知了我们所需要的数据,接下来创建一个 sockaddr_in 结构体变量用于配置服务器信息: struct sockaddr_in server_addr; 随后配置地址家族为...代码为: struct sockaddr_in c_skt;  int s_size=sizeof(struct   sockaddr_in); int access_skt = accept(skt,...\n");   struct sockaddr_in c_skt;    int s_size=sizeof(struct   sockaddr_in);   int access_skt = accept

1.2K00

【计算机网络】socket编程

网络通信的理解 主机A将自己的数据交给主机B,就需要给主机B发送消息,主机B未来要给主机A回消息 但实际上 主机A将自己的数据交给主机B 并不是最终目的 :你在淘宝上买了一件衣服,卖家发货后,广东省发货...struct sockaddr 若想进行网络通信 (struct sockaddr_in) 或者 进行 本地通信 (struct sockaddr_un) ,使用 sockaddr 进行强制转换即可...sockaddr_in 若等于 AF_UNIX,就为本地通信,把 sockaddr强转为 sockaddr_un ---- udp_server.hpp的代码解析 通过网络协议栈的通信功能 ,来把数据交付给对方的应用层...类型 需添加头文件 定义一个 struct sockaddr_in(网络通信) 类型的 变量 local struct sockaddr_in的理解 将 struct sockaddr_in 转到定义...,而参数的类型为 公共结构体类型 struct sockaddr ,所以需要强转 ---- 使用 revfrom ,获取用户数据报 收到来自服务器转回来的消息 ,所以 定义一个 temp结构体,用于接收

27730

Linux下编程获取本地IP地址的常见方法

编程遇到必须获取计算机IP的场景,应该考虑将这一选项放到配置文件,由用户自己来设置。 参考网络和书本,编程获取本机IP地址大约有以下几种方法。...具体过程是先通过ictol获取本地的所有接口信息,存放到ifconf结构,再从其中取出每个ifreq表示的ip信息(一般每个网卡对应一个IP地址,:”eth0…、eth1…”)。...IP地址,在获取本地IP地址时,一般都是回环地址,但可以有效的根据主机名称获取网络的主机的IP地址,通过域名获取域名对应的IP地址。...要想精确的获取某块网卡绑定的IP地址,请根据ioctl()和接口名称(eth0)来获取,具体实现见上文。...方法三:getaddrinfo()获取本地IP地址 注意,getaddrinfo()可以完成网络主机主机名和服务名到地址的映射,但是一般不能用来获取本地IP地址,当它用来获取本地IP地址时,返回的一般是

7.8K20

VC++ IPv6的支持

后面的成员都是作为保留字段,或者说作为填充结构大小的字段,这个结构兼容了IPV6与IPV4的地址结构,跟以前的SOCKADDR_IN结构不同,我们现在不能直接SOCKADDR_STORAGE结构获取...SOCKADD_IN 与sockaddr_in结构 在Winsock2 这二者是等价的, 它们的定义如下: struct sockaddr_in{ short sin_family; unsigned...; char sa_data[14]; }; 结构上看它占16个字节与 SOCKADDR_IN大小相同,而且第一个成员都是地址家族的相关信息,后面都是存储的具体的IPV4的地址,因此它们是可以转化的...各种地址之间的转化 一般我们只使用SOCKADDR_INsockaddr结构的转化,而且仔细观察socket函数族发现只需要从其他结构得到sockaddr结构,而并不需要从sockaddr转化为其他结构...,因此这里重点放在如何转化为sockaddr结构 SOCKADDR_INsockaddr只需要强制类型转化即可 addrinfo结构只需要调用其成员即可 SOCKADDR_STORAGE结构到

1.4K20

C语言第1课——socket编程+c++,c语言语录

实际上,它包含上百个功能的协议,ICMP(互联网控制信息协议)、FTP(文件传输协议)、UDP(用户数据包协议)、ARP(地址解析协议)等。...套接字的数据结构:C语言进行套接字编程时,常会使用到sockaddr数据类型和sockaddr_in数据类型,用于保存套接字信息。...sockaddr_in { //地址族 short int sin_family; //端口号(使用网络字节序) unsigned short int sin_port; //地址 struct...而用sockaddr_in来替。 两种数据结构,地址族都占2个字节, 常见的地址族有:AF_INET,AF_INET6AF_LOCAL。..., 2), &wsaData); //创建套接字 SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); //向服务器发起请求 struct sockaddr_in

2.2K10

Linux网络编程TCP

TCP/IP协议 TCP/IP 协议栈是一系列网络协议(protocol)的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。...TCP编程 Linux的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符。常用于不同机器上的进程之间的通信,当然也可以实现本地机器上的进程之间通信。...{ sa_family_t sa_family; char sun_path[100]; } TCP/IP协议族 TCP/IP协议族有sockaddr_insockaddr_in6两个专用的socket...地址结构体,分别对应IPv4和IPv6 IPv4对应的协议族sockaddr_in定义如下 struct sockaddr_in { sa_family_t sin_family; /*地址族:AF_INET...struct sockaddr_in servaddr; /*(2) 设置服务器协议族sockaddr_in结构*/ bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family

5.4K30

网络套件字(理论知识)

三、端口号 知道了消息如何在两台不同的主机之间传递,那么当消息传递到另一台主机后,如何知道该消息是发送给主机上哪一个应用呢?...网络的设计者想要把跨网络通信和本地通信进行大一统,因此套接字提供了sockaddr_in结构体和sockaddr_un结构体,其中sockaddr_in结构体是用于跨网络通信的(网络套接字),而sockaddr_un...注意  IPv4和IPv6的地址格式定义在netinet/in.h,IPv4地址用sockaddr_in结构体表示,包括16位地址类型, 16 位端口号和32位IP地址....在这个里面我们并没有看到sin_family这个部分,事实上这个就是第二个图片240那行那个在 sockaddr_in 结构体,sin_family 是 __SOCKADDR_COMMON(sin_)...发送主机通常将发送缓冲区的数据按内存地址从低到高的顺序发出; 接收主机把网络上接到的字节依次保存在接收缓冲区,也是按内存地址从低到高的顺序保存; 因此,网络数据流的地址应这样规定:先发出的数据是低地址

9110
领券