套接口编程简介

1、套接口地址结构

POSIX规范只需要结构中的三个成员:sin_family、sin_addr、sin_port。其中sin_addr又是一个结构

2、通用套接口地址结构

套接口函数被定义为采用指向通用套接口地址结构的指针。由于套接口函数的定义并没有使用void*指针类型,

所以调用套接口函数时必须进行强制类型转换。

使用通用套接口地址结构的原因:内核必须依据通用套接口地址结,检查sin_family的值来确定结构的类型

3、字节排序函数

多字节数据在内存中存储有两种方法。小端字节序把低字节存储在起始地址;大端字节序高序字节存储在起始地址。

POSIX规范规定,套接口地址结构中一些成员按网络字节序进行维护,所以必须注意主机字节序和网络字节序之间

的转换。

#include <netinet/in.h>

返回网络字节序值

uint16_t htons (uint16_t)

uint32_t htonl (uint32_t)

返回主机字节序值

uint16_t ntohs (uint16_t)

uint32_t ntohl (uint32_t)

4、地址转换函数

地址转换函数用于ASCII字符串和网络字节序的二进制值间转换地址

#include <arpa/inet.h>

int inet_aton(const char *strptr, struct in_addr *addrptr)

把strptr所指的字符串转换为32位的网络字节序二进制值,把结果保存在addrptr中。成功返回1,失败返回0。

in_addr_t inet_addr (const char *strptr)

返回32位网络字节序二进制值。失败时返回一个常值INADDR_NONE(255.255.255.255),所以该函数不能处理

点分十进制数串255.255.255.255

char *inet_ntoa (struct in_addr inaddr)

将32位网络字节序二进制值转换成点分十进制数串。

下面两个转换函数对ipv4和ipv6地址都能处理。

#include <arpa/inet.h>

点分十进制到二进制转换

int inet_pton (int family, const char *strptr, void *addrptr)

二进制到点分十进制转换

const char *inet_ntop (int family, const void *addrptr, char *strptr, size_t len)

时间: 2024-10-26 20:24:24

套接口编程简介的相关文章

unix网络编程之基本套接口编程

第一章  套接口编程简介 IPv4套接口地址:"网际套接口地址结构" 通用套接口地址结构: 套接口函数被定义为采用指向通用套接口地址结构的指针,这要求对这些函数的任何调用都必须将指向特定于协议的套接口地址结构的指针类型转换成指向通用套接口地址结构的指针: 套接口地址结构的比较: 值-结果参数: 当把套接口地址结构传递给套接口函数时,总是通过指针来传递的,即传递的是一个指向结构的指针. 1, 从进程到内核传递套接口地址结构有3个函数:bind.connect.sendto,这3个函数的一

值得收藏的TCP套接口编程文章

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由jackieluo发表于云+社区专栏 TCP客户端-服务器典型事件 下图是TCP客户端与服务器之间交互的一系列典型事件时间表: 首先启动服务器,等待客户端连接 启动客户端,连接到服务器 客户端发送一个请求给服务器,服务器处理请求,响应客户端 循环步骤3 客户端给服务器发一个文件结束符,关闭客户端连接 服务器也关闭连接 基本TCP客户-服务器程序的套接口函数 套接口编程基本函数 socket 函数 为了执行网络I/O,一个进程(无论

C网络编程-TCP套接口编程

只有几个基本的示例如下 建立服务端的绑定监听等过程的函数 1 #include<sys/types.h> 2 #include<sys/socket.h> 3 4 #include<netinet/in.h> 5 #include<arpa/inet.h> 6 #include<unistd.h> 7 8 #include<stdio.h> 9 #include<stdlib.h> 10 11 #include<st

UNPv1第四章:基本TCP套接口编程

1 socket函数 为了执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型 #include <sys/socket.h> int socket (int family, int type, int protocol); //返回:若成功则为非负描述符,若出错则为-1 其中family指明协议族,type参数指明套接字类型,protocol参数应该设为某个(见下图)协议类型常值,或者设为0,以选择所给定family和type组合的系统默认值 socket

【转】Linux C 网络编程——TCP套接口编程

地址:http://blog.csdn.net/matrix_laboratory/article/details/13669211 2. socket() [cpp] view plaincopy <span style="font-size:14px">int socket(int domain, int type, int protocol);</span> socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符,应用程

基本套接口编程中的函数(自用)

uint16_t htons(uint16_t host16bitvalue); uint32_t htonl(uint32_t host32bitvalue); //均返回:网络字节序值 uint16_t ntohs(uint16_t host16bitvalue); uint32_t ntohl(uint32_t host32bitvalue); //均返回:主机字节序值 int inet_aton(const char *string, struct in_addr*addr); //将一

《网络编程》套接字编程简介

本节介绍的套接字是可以实现不同计算机之间的远程进程间通信.套接口是网络进程的 ID,在网络中每一个节点都有一个网络地址,也就是 IP 地址,两个进程间通信时,首先要确定各自所在网络节点的网络地址.但是,网络地址只要确定进程所在的计算机,由于一台计算机上同时可能有多个网络进程,所以仅凭网络地址还不能确定是网络中的哪一个进程,因此套接口中还需要其他信息,也就是端口.在一台计算机中,一个端口号只能分配给一个进程,所以,进程和端口之间是一一对应的关系.因此,使用端口号和网络地址的组合就能唯一地确定整个网

【Unix网络编程】chapter3 套接字编程简介

chapter3套接字编程简介3.1 概述 地址转换函数在地址的文本表达和他们存放在套接字地址结构中的二进制值之间进行转换.多数现存的IPv4代码使用inet_addr和inet_ntoa这两个函数,不过这两个新函数inet_pton和inet_ntop同时适用于IPv4和IPv6. 3.2 套接字地址结构 sockaddr_ 3.2.1 IPv4套接字地址结构 IPv4套接字地址结构通常也称为"网际套接字地址结构",它以sockaddr_in命令,定义在<netinet/in.

Python基础-第七天-面向对象编程进阶和Socket编程简介

本篇内容: 1.面向对象编程进阶-静态方法 2.面向对象编程进阶-类方法 3.面向对象编程进阶-属性方法 4.面向对象编程进阶-特殊成员(内置方法) 5.面向对象编程进阶-反射 6.异常处理.断言 7.Socket编程简介 一.面向对象编程进阶-静态方法 1.静态方法的实现 通过@staticmethod装饰器可以把其装饰的方法变为一个静态方法: 变成静态方法后,形参中可以不用写self了.如果写了self,默认是不会把对象本身传递给self,需要手动传递: class Dog(object):