UNP---套接字简介

IPv4套接字结构:

struct in_addr

{

in_addr_t s_addr;

};

struct sockaddr_in

{

uint8_t sin_len;

sa_family sin_family;

in_port_t sin_port;//2bytes

struct in_addr sin_addr;//4bytes

char sin_zero[8];

};

通用套接字结构

struct sockaddr

{

uint8_t sin_len;

sa_family_t sin_family;

char sa_data[14];//从上面看出IPv4的地址结构后面的三个成员加起来就是14个字节

};

值-结构参数:

1.进程到内核传递套接字地址结构的函数有三个:bind,connect和sendto。这三个函数,第一个参数是指向某个套接字的地址结构的指针。第二个参数是该结构的大小。既然指针和大小都告诉内核了,内核就知道需要从进程中复制多少数据。

2.内核到进程传递套接字地址结构的函数有4个:accept,recvfrom,getsockname和getpeername。这四个函数中的两个参数是指向某个套接字地址结构的指针和指向表示该结构大小的整数变量的指针。地址接偶大小这个参数从一个整数变量变成一个指针的原因有:当函数调用时,告诉内核该结构的大小,内核写数据的不会写越界;当函数返回时,又能得到内核在该结构中写了多少数据。

大端和小端:表示多个字节值的哪一端存储在该值的起始地址

时间: 2024-12-10 05:44:51

UNP---套接字简介的相关文章

原始套接字简介(原始套接字系列一)

大多数程序员所接触到的套接字(Socket)为两类: (1)流式套接字(SOCK_STREAM):一种面向连接的Socket,针对于面向连接的TCP服务应用: (2)数据报式套接字(SOCK_DGRAM):一种无连接的Socket,对应于无连接的UDP服务应用. 从用户的角度来看,SOCK_STREAM.SOCK_DGRAM这两类套接字似乎的确涵盖了TCP/IP应用的全部,因为基于TCP/IP的应用,从协议栈的层次上讲,在传输层的确只可能建立于TCP或UDP协议之上(图1),而SOCK_STRE

原始套接字学习笔记(1)

一般来说,我们会用到如下三种套接字: TCP:SOCK_STREAM套接字 UDP:SOCK_DGRAM套接字 原始套接字:SOCK_RAW套接字 对于TCP和UDP两种套接字,相对来说只要配置好IP地址和端口号就可以了,比较简单,这里我们主要介绍原始套接字的使用. 1.原始套接字简介 原始套接字的强大之处在于,不同与UDP和TCP套接字只能访问传输层和传输层以上的数据包,原始套接字可以访问传输层以下的数据包,实现上至应用层下至链路层的数据操作,尤其适合用来进行抓包等工作. 2.原始套接字的建立

UNIX网络编程:socket套接字(TCP与UDP)

套接字简介: 套接字是网络编程中的一种通信机制,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程.应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题.凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行,Linux所提供的功能(如打印服务,ftp等)通常都是通过套接字来进行通信的,套接字的创建和使用与管道是有区别的,

进程-IPC 套接字 (四)

详见:https://github.com/ZhangzheBJUT/linux/blob/master/IPC(%E5%9B%9B).md 七 套接字 7.1. 套接字简介 之前所讨论的IPC机制都是依靠一台计算机共享系统资源实现的,这些资源可以是文件系统(命名管道).共享的物理内存(共享内存)和消息队列,这些只有运行在同一台机器上的进程可以使用. 伯克利版本的UNIX系统引入了一种新的通信工具-套接字接口(socket interface).一台机器上的进程可以通过使用套接字和另外一台机器上

UNP学习笔记(第三章:套接字编程简介)

本章开始讲解套接字API. 套接字地址结构 IPv4套接字地址结构 它以sockaddr_in命名,下面给出它的POSIX定义 struct in_addr { in_addr_t s_addr; }; stuct sockaddr_in { uint8_t sin_len; sa_family_t sin_family; /* AF_INET */ in_port_t sin_port; struct in_addr sin_addr; char sin_zero[8]; }; POSIX规范

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

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

UNP学习笔记(第四章 基本TCP套接字编程)

本章讲解编写一个完整的TCP客户/服务器程序所需要的基本套接字函数. socket函数 #include <sys/socket.h> int socket(int family,int type,int protocol); //返回:成功则为非负描述符,若出错则为-1 family参数指明协议族,它是如下某个常值 type参数指明套接字类型,它是如下某个常值 protocol参数为下面某个协议类型常值,或者设为0,以选择所给定family和type组合的系统默认值 下图展示了基本TCP客户

Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介

Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- Android包 : android.net 包 (1接口, 19类, 3枚举, 1异常), android.net.http 包 (6类), android.net.nsd 包 (3接口, 2类), android.net.rtp (4类), android.net.sip 包 (1接口, 9类, 1

apue和unp的学习之旅10——基本udp套接字编程

使用UDP编写的一些常见的应用程序有:DNS(域名系统),NFS(网络文件系统),SNMP(简单网络管理协议). //---------------------------------1.recvfrom函数和sendto函数---------------------------------- #include <sys/socket.h> ssize_t  recvfrom(int sockfd, void* buff, size_t nbytes, int flags, struct so

PHP Socket(套接字连接)扩展简介和使用方法

PHP socket扩展是基于流行的BSD sockets,实现了和socket通讯功能的底层接口,它可以和客户端一样当做一个socket服务器. 使用这些函数时请注意,虽然他们中有很多和C函数同名的,但声明却很可能不同.未避免混淆,请仔细阅读函数描述. 不熟悉socket编程的可以在Unix手册上找到很多有用的信息,网上也有很多C socket编程方面的教程,简单修改一下就可以应用于PHP socket编程. 第一步:开启socket 到php.ini开启extension=php_socke