#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.
相关推荐
1. socket()函数:创建一个新的套接字描述符,指定协议类型(如SOCK_STREAM for TCP,SOCK_DGRAM for UDP)和协议族(如AF_INET for IPv4,AF_INET6 for IPv6)。 2. bind()函数:将套接字绑定到本地地址,通常包含...
1. **PF_INET6与AF_INET6的区别**:PF是对协议族的总称,而AF是具体的地址家族,两者在socket编程中都是为了标识不同的通信协议,AF_INET6是PF_INET6的一个实例。 2. **IPv6地址结构**:IPv6地址由128位组成,通常...
### Linux系统编程之c_socket知识点详解 #### 一、Socket编程概述 Socket编程是网络通信的基础,它使得不同计算机间的数据交互成为可能。在Linux环境下,Socket编程涉及到一系列的函数调用,这些调用帮助开发者...
Socket编程在Linux环境中是网络通信的核心技术之一,主要用于创建进程间的网络连接,允许不同设备上的应用程序进行数据交换。本文将对标题和描述中提到的Socket编程相关知识点进行深入阐述。 一、Socket的基本概念 ...
本资料包“linux-socket-C-S.rar”聚焦于C/S(客户端/服务器)架构下的Linux串口和Socket编程,为开发者提供了宝贵的资源。 串口通信是一种传统的通信方式,常用于设备间的短距离通信,如调试设备、数据采集等。在...
在Linux中,创建Socket首先需要调用`socket()`函数,指定协议族(如AF_INET代表IPv4)、套接字类型(如SOCK_STREAM代表TCP或SOCK_DGRAM代表UDP)以及协议(通常为0,让系统自动选择)。 ```c int socket_fd = ...
本文将深入探讨Linux下的Socket网络编程,主要使用C语言进行讲解。 一、Socket基本概念 Socket在网络编程中扮演着核心角色,它是进程间的通信端点,提供了在互联网上不同计算机间进程通信的接口。在Linux中,Socket...
### Linux操作系统下的C语言网络编程入门 随着互联网的迅速发展,网络编程已成为现代软件开发中的一个核心技能。在Linux环境下进行网络编程不仅能够让你更好地理解网络通信的基本原理,还能够帮助你在众多开发者中...
5. **协议族和数据类型**:在创建套接字时,需要指定协议族(如AF_INET表示IPv4,AF_INET6表示IPv6),以及数据类型(如SOCK_STREAM对应TCP,SOCK_DGRAM对应UDP)。 压缩包中的文件可能包含以下示例: 1. **TCP...
在Linux系统中,网络编程是实现跨机器通信的关键技术,特别是TCP协议,它提供了一种可靠的、基于连接的传输方式。本示例中,我们有两个文件,一个作为服务器端,另一个作为客户端,它们用于实现通过TCP协议从服务器...
`socket`函数接收三个参数:协议簇(如AF_INET代表IPv4,AF_INET6代表IPv6)、套接口类型(SOCK_STREAM或SOCK_DGRAM等)以及协议号(非原始套接口时为0)。创建成功后,会返回一个文件描述符,后续的网络操作都将...
本教程将探讨如何在Linux环境下使用C语言编写TCP socket的客户端和服务器程序。TCP是一种面向连接的、可靠的传输协议,它确保了数据包按顺序发送且无丢失。 首先,我们来理解TCP套接字的基本概念。套接字是进程间的...
在IT行业中,网络编程是不可或缺的一部分,特别是在操作系统如Linux中,C语言被广泛用于系统级编程,包括网络通信。本文将深入探讨标题“UDP.rar_C语言udp组播_linux UDP_udp linux _udp组播c语言”所涉及的知识点,...
- 使用`socket()`函数创建一个Socket,需要指定协议族(如AF_INET用于IPv4,AF_INET6用于IPv6),套接字类型(如SOCK_STREAM为TCP,SOCK_DGRAM为UDP)以及协议(通常为0,由系统自动选择)。 3. **绑定Socket**: ...
要创建一个UDP套接字,开发者需要调用`socket()`函数,指定`AF_INET`作为地址家族和`SOCK_DGRAM`作为套接字类型,然后通过`bind()`函数绑定本地端口,`sendto()`和`recvfrom()`函数用于发送和接收数据。由于UDP是无...
此外,`c_ntp`标签表明这个实现是用C语言编写的,C语言是一种底层且高效的编程语言,适合处理网络通信和时间同步这类对性能有较高要求的任务。`linux-ntp.rar`标签则表明这是一个针对Linux平台的实现,因此其中的API...
在TCP编程中,域通常设置为`AF_INET`表示IPv4,类型通常设置为`SOCK_STREAM`表示TCP流式连接,协议则通常设置为0,让系统选择默认的TCP协议。 2. `bind()`: 这个函数将套接字与本地地址绑定,使服务器能够监听特定...
- 创建套接字:使用`socket()`函数创建一个套接字,指定协议类型(如TCP或UDP)和地址族(如AF_INET用于IPv4)。 - 绑定套接字:`bind()`函数将套接字与特定的IP地址和端口号关联起来。 - 监听连接:`listen()`...