`
lobin
  • 浏览: 417504 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C: Linux C 编程 - AF_INET6

 
阅读更多

 

#include <stdio.h>
#include <errno.h>
#include <netinet/in.h>

#include <sys/types.h>
#include <sys/socket.h>

void main()
{
  int fd;
  struct sockaddr_in6 sockaddr;

  int fd_got;
  struct sockaddr_in6 sockaddr_got;
  int sockaddr_got_len = sizeof(struct sockaddr_in6);

  fd = socket(AF_INET6, SOCK_STREAM, 0);
  if (fd == -1)
  {
    printf("socket err: %d\n", errno);
    return;
  }

  sockaddr.sin6_family = AF_INET6;
  sockaddr.sin6_addr = in6addr_any;
  sockaddr.sin6_port = htons(2121);

  if(bind(fd, (struct sockaddr *) &sockaddr, sizeof(struct sockaddr_in6)) == -1) 
  {
    printf("bind err: %d\n", errno);
    return;
  }

  if (listen(fd, 50) == -1) 
  {
    printf("listen err: %d\n", errno);
    return;
  }

  fd_got = accept(fd, (struct sockaddr *) &sockaddr_got, &sockaddr_got_len);
  if (fd_got == -1)
  {
    return;
  }
  printf("socket: accepted, fd=%d\n", fd_got);

  close(fd_got);
  close(fd);
}

运行

# ./socket_ipv6_test0 

socket: accepted, fd=4

 

通过telnet连接:

 

 

在本地也可以通过ipv6的回路地址::1进行连接

# telnet ::1 2121

Trying ::1...

Connected to ::1.

Escape character is '^]'.

Connection closed by foreign host.

 

通过ipv6地址进行连接

# telnet -8 fe80::20c:29ff:fe12:7803%eth0 2121

Trying fe80::20c:29ff:fe12:7803%eth0...

Connected to fe80::20c:29ff:fe12:7803%eth0.

Escape character is '^]'.

Connection closed by foreign host.

 

同时也支持ipv4连接

 

在本地可以直接通过ipv4的回路地址localhost进行连接

# telnet localhost 2121

Trying ::1...

Connected to localhost.

Escape character is '^]'.

Connection closed by foreign host.

 

通过ipv4地址进行连接

# telnet 192.168.0.102 2121

Trying 192.168.0.102...

Connected to 192.168.0.102.

Escape character is '^]'.

Connection closed by foreign host.

 

 

 

分享到:
评论

相关推荐

    套接字socket编程文档.rar_MultiGet-1.1.4_linux_linux socket_linux 编程_soc

    1. socket()函数:创建一个新的套接字描述符,指定协议类型(如SOCK_STREAM for TCP,SOCK_DGRAM for UDP)和协议族(如AF_INET for IPv4,AF_INET6 for IPv6)。 2. bind()函数:将套接字绑定到本地地址,通常包含...

    bp_ioctl.rar_PF-BP_family

    1. **PF_INET6与AF_INET6的区别**:PF是对协议族的总称,而AF是具体的地址家族,两者在socket编程中都是为了标识不同的通信协议,AF_INET6是PF_INET6的一个实例。 2. **IPv6地址结构**:IPv6地址由128位组成,通常...

    Linux系统编程之c_socket

    ### Linux系统编程之c_socket知识点详解 #### 一、Socket编程概述 Socket编程是网络通信的基础,它使得不同计算机间的数据交互成为可能。在Linux环境下,Socket编程涉及到一系列的函数调用,这些调用帮助开发者...

    socket总结资料(Linux)

    Socket编程在Linux环境中是网络通信的核心技术之一,主要用于创建进程间的网络连接,允许不同设备上的应用程序进行数据交换。本文将对标题和描述中提到的Socket编程相关知识点进行深入阐述。 一、Socket的基本概念 ...

    linux-socket-C-S.rar_C/S linux_linux c 串口_linux socket_linux 串口C

    本资料包“linux-socket-C-S.rar”聚焦于C/S(客户端/服务器)架构下的Linux串口和Socket编程,为开发者提供了宝贵的资源。 串口通信是一种传统的通信方式,常用于设备间的短距离通信,如调试设备、数据采集等。在...

    实战Linux Socket 编程-示例源码

    在Linux中,创建Socket首先需要调用`socket()`函数,指定协议族(如AF_INET代表IPv4)、套接字类型(如SOCK_STREAM代表TCP或SOCK_DGRAM代表UDP)以及协议(通常为0,让系统自动选择)。 ```c int socket_fd = ...

    socket_linux-socket网络编程详解_

    本文将深入探讨Linux下的Socket网络编程,主要使用C语言进行讲解。 一、Socket基本概念 Socket在网络编程中扮演着核心角色,它是进程间的通信端点,提供了在互联网上不同计算机间进程通信的接口。在Linux中,Socket...

    linux操作系统下c语言编程入门--网络编程

    ### Linux操作系统下的C语言网络编程入门 随着互联网的迅速发展,网络编程已成为现代软件开发中的一个核心技能。在Linux环境下进行网络编程不仅能够让你更好地理解网络通信的基本原理,还能够帮助你在众多开发者中...

    linux-net-programming-sample-code.zip_Linux 以太网_linux c

    5. **协议族和数据类型**:在创建套接字时,需要指定协议族(如AF_INET表示IPv4,AF_INET6表示IPv6),以及数据类型(如SOCK_STREAM对应TCP,SOCK_DGRAM对应UDP)。 压缩包中的文件可能包含以下示例: 1. **TCP...

    linux网络编程-tcp获取时间

    在Linux系统中,网络编程是实现跨机器通信的关键技术,特别是TCP协议,它提供了一种可靠的、基于连接的传输方式。本示例中,我们有两个文件,一个作为服务器端,另一个作为客户端,它们用于实现通过TCP协议从服务器...

    一步一步教你学linux网络编程

    `socket`函数接收三个参数:协议簇(如AF_INET代表IPv4,AF_INET6代表IPv6)、套接口类型(SOCK_STREAM或SOCK_DGRAM等)以及协议号(非原始套接口时为0)。创建成功后,会返回一个文件描述符,后续的网络操作都将...

    Linux-socket-TCP-ClientServer.zip_TCP socket_linux socket_linux

    本教程将探讨如何在Linux环境下使用C语言编写TCP socket的客户端和服务器程序。TCP是一种面向连接的、可靠的传输协议,它确保了数据包按顺序发送且无丢失。 首先,我们来理解TCP套接字的基本概念。套接字是进程间的...

    UDP.rar_C语言udp组播_linux UDP_udp linux _udp组播c语言

    在IT行业中,网络编程是不可或缺的一部分,特别是在操作系统如Linux中,C语言被广泛用于系统级编程,包括网络通信。本文将深入探讨标题“UDP.rar_C语言udp组播_linux UDP_udp linux _udp组播c语言”所涉及的知识点,...

    SOCKET-on-Linux.zip_linux socket_linux socket_linux_socket

    - 使用`socket()`函数创建一个Socket,需要指定协议族(如AF_INET用于IPv4,AF_INET6用于IPv6),套接字类型(如SOCK_STREAM为TCP,SOCK_DGRAM为UDP)以及协议(通常为0,由系统自动选择)。 3. **绑定Socket**: ...

    Linux高级编程-补充.pdfLinux高级编程-补充.pdf

    int if_fd = socket(AF_INET, SOCK_PACKET, htons(0x0800)); struct ifreq ifr; strcpy(ifr.ifr_name, device); ioctl(if_fd, SIOCGIFFLAGS, &ifr); if (pflag) { ifr.ifr_flags |= IFF_PROMISC; // 设置...

    udp.rar_UDP_UDP-winsock_linux ud_linux与windows UDP

    要创建一个UDP套接字,开发者需要调用`socket()`函数,指定`AF_INET`作为地址家族和`SOCK_DGRAM`作为套接字类型,然后通过`bind()`函数绑定本地端口,`sendto()`和`recvfrom()`函数用于发送和接收数据。由于UDP是无...

    ntp.rar_c ntp_linux NTP_linux-ntp.rar_ntp_ntp linux

    此外,`c_ntp`标签表明这个实现是用C语言编写的,C语言是一种底层且高效的编程语言,适合处理网络通信和时间同步这类对性能有较高要求的任务。`linux-ntp.rar`标签则表明这是一个针对Linux平台的实现,因此其中的API...

    Linux下TCP网络编程-创建服务器与客户端.pdf

    在TCP编程中,域通常设置为`AF_INET`表示IPv4,类型通常设置为`SOCK_STREAM`表示TCP流式连接,协议则通常设置为0,让系统选择默认的TCP协议。 2. `bind()`: 这个函数将套接字与本地地址绑定,使服务器能够监听特定...

Global site tag (gtag.js) - Google Analytics