C++ 网络编程 sockaddr_in结构体

这篇具有很好参考价值的文章主要介绍了C++ 网络编程 sockaddr_in结构体。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

sockaddr_in是一个结构体,用于描述IPv4的地址信息,其定义如下:

struct sockaddr_in {
    short int sin_family;           // 地址族,一般为AF_INET
    unsigned short int sin_port;    // 端口号,网络字节序
    struct in_addr sin_addr;        // IP地址
    unsigned char sin_zero[8];      // 用于填充,使sizeof(sockaddr_in)等于16
};

其中,in_addr结构体用于存储IP地址,其定义如下:

struct in_addr {
    unsigned long s_addr;   // IP地址,网络字节序
};

下面是一个示例代码,用于创建一个IPv4的TCP套接字,并绑定到本地IP地址和端口号:

#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main() {
    int sockfd = socket(AF_INET, SOCK_STREAM, 0);   // 创建TCP套接字
    if (sockfd == -1) {
        std::cerr << "socket error" << std::endl;
        return -1;
    }

    sockaddr_in server_addr;
    std::memset(&server_addr, 0, sizeof(server_addr));    // 清空结构体
    server_addr.sin_family = AF_INET;   // 地址族为IPv4
    server_addr.sin_port = htons(12345); // 绑定端口号为12345,需要进行网络字节序转换
    server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 绑定本地IP地址为127.0.0.1,需要进行网络字节序转换

    if (bind(sockfd, (sockaddr *)&server_addr, sizeof(server_addr)) == -1) {    // 绑定套接字和地址信息
        std::cerr << "bind error" << std::endl;
        return -1;
    }

    // 其他操作...

    close(sockfd);  // 关闭套接字

    return 0;
}

需要注意的是,IPv4地址需要进行网络字节序转换,可以使用inet_addr函数或inet_pton函数进行转换。端口号也需要进行网络字节序转换,可以使用htons函数或htons函数进行转换。
bind函数将一个socket与一个特定的IP地址和端口号进行绑定,使得该socket可以接受来自该地址和端口号的数据。这样,当其他socket向该地址和端口号发送数据时,该socket就可以接收并处理这些数据。在网络编程中,bind函数通常用于服务器端,用于绑定服务器的IP地址和端口号,以便客户端可以连接服务器。文章来源地址https://www.toymoban.com/news/detail-616356.html

到了这里,关于C++ 网络编程 sockaddr_in结构体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++网络编程(一)本地socket通信

    本次内容简单描述C++网络通信中,采用socket连接客户端与服务器端的方法,以及过程中所涉及的函数概要与部分函数使用细节。记录本人C++网络学习的过程。 socket,即“插座”,在网络中译作中文“套接字”,应用于计算机网络建立起数据连接。基于TCP/IP协议进行通信,将本地的

    2024年02月15日
    浏览(43)
  • 第四章 Linux网络编程 4.1 网络结构模式 4.2MAC地址、IP地址、端口

    C/S结构 简介 服务器 - 客户机 ,即 Client - Server(C/S)结构。C/S 结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。客户机是因特网上访问别人信息的机器,服务器则是提供信息供人访问的计算机。 客户机通过局域网与服务器相连,接受用户

    2024年02月08日
    浏览(45)
  • Linux网络编程——C++实现进程间TCP/IP通信

    地址接口 1、通用地址接口 共16字节 = 2字节地址类型 + 14字节地址数据 2、自定义地址接口 地址转换 1、需要将点分字符串ip转化为程序ip,使用inet_addr函数: 2、字节序转换 地址接口配置中的端口需要字节序转换,网络规定使用大端字节序。 地址接口配置 1、socket:创建套接

    2024年02月20日
    浏览(53)
  • C++中的网络编程和安全性:实现安全的Web应用程序和网络应用程序

    作者:禅与计算机程序设计艺术 《67. C++中的网络编程和安全性:实现安全的Web应用程序和网络应用程序》 1.1. 背景介绍 随着互联网的快速发展,网络应用程序在人们的生活和工作中扮演着越来越重要的角色,网络编程和安全性也成为了现代应用程序的重要组成部分。在网络

    2024年02月16日
    浏览(51)
  • Linux C++ 网络编程基础(2) : TCP多线程一个server对应多个client

    作者:令狐掌门 技术交流QQ群:675120140 csdn博客:https://mingshiqiang.blog.csdn.net/   tcp编程时, 一个server可以对应多个client, server端用多线程可以实现. linux下多线程可以使用POSIX的线程函数, 下面给出服务端和客户端的代码.   Linux POSIX线程库提供了一组函数来创建、管理和同步

    2024年02月13日
    浏览(47)
  • C++开发基础之网络编程WinSock库使用详解TCP/UDP Socket开发

    Winsock是Windows操作系统提供的用于网络编程的API库。它是Windows Sockets的简称,也就是套接字库。Winsock可以让开发人员使用TCP/IP协议族中的各种协议,如TCP、UDP等,在Windows平台下进行网络编程。 Winsock提供了一组函数和数据结构,这些函数和数据结构可以让开发人员创建和管理

    2024年01月23日
    浏览(50)
  • lv7 嵌入式开发-网络编程开发 03 TCP/IP与五层体系结构

    目录 1 TCP/IP协议族体系结构 1.1 OSI与TCP/IP 1.2 TCP/IP 的体系结构  1.3 TCP/IP 体系结构的另一种表示方法 1.4 沙漏计时器形状的 TCP/IP 协议族 2 五层协议的体系结构 2.1 各层的主要功能  2.2 互联网中客户-服务器工作方式 2.3 同时为多个客户进程提供服务  3 练习 是事实上的国际标

    2024年02月07日
    浏览(64)
  • C++网络编程 TCP套接字基础知识,利用TCP套接字实现客户端-服务端通信

    流式套接字编程针对TCP协议通信,即是面向对象的通信,分为服务端和客户端两部分。 1)加载套接字库( 使用函数WSAStartup() ),创建套接字( 使用socket() ) 2)绑定套接字到一个IP地址和一个端口上( 使用函数bind() ) 3)将套接字设置为监听模式等待连接请求( 使用函数

    2024年02月03日
    浏览(55)
  • Redis的实现二: c、c++的网络通信编程技术,让服务器处理多个client

           看过上期的都知道,我是搞java的,所以对这些可能理解不是很清楚,各位看完可以尽情发言。       在服务器端网络编程中,有三种处理并发连接的方法。       它们是: 分叉 、 多线程 和 事件循环 。分叉为每个客户端连接创建新进程,以实现并发性。多线程使用

    2024年02月01日
    浏览(43)
  • Redis的实现一:c、c++的网络通信编程技术,先实现server和client的通信

    由于,本人是主修java的,所以以下内容可能不是很精通,各位看完后尽可评论。 以下皆是在linux的描述 Socket()函数 :创建用于通信的端点并返回描述符。 它的第一个参数 便是通信域,这里我举出常用的。 AF_INET是ipv4的。 AF_INET6是ipv6的。 它的第二个参数 便是套接字具有指定

    2024年01月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包