首页 > 编程语言 >网络基础编程

网络基础编程

时间:2022-12-25 21:45:16浏览次数:39  
标签:sockaddr socket 协议 编程 基础 网络 地址 接字 struct

7.2.1 套接字(socket)概述

7.2.2 地址及顺序处理

7.2.3 套接字编程

 

套接字定义
  在Linux中的网络编程是通过socket接口来进行的。套接字(socket)是一种特殊的I/O接口,它也是一种文件描述符。socket是一种常用的进程之间通信机制,通过它不仅能实现本地机器上的进程之间的通信,而且通过网络能够在不同机器上的进程之间进行通信。
  每一个socket都用一个半相关描述{协议、本地地址、本地端口}来表示;一个完整的套接字则用一个相关描述{协议、本地地址、本地端口、远程地址、远程端口}来表示。socket也有一个类似于打开文件的函数调用,该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过socket来实现的。

 

套接字类型

流式套接字(SOCK_STREAM)

  流式套接字提供可靠的、面向连接的通信流;它使用TCP协议,从而保证了数据传输的可靠性和顺序性。

数据报套接字(SOCK_DGRAM)

  数据报套接字定义了一种无可靠、面向无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议UDP。

原始套接字(SOCK_RAW)

  原始套接字允许对底层协议如IP或ICMP进行直接访问,它功能强大但使用较为不便,主要用于一些协议的开发。

 

地址结构处理
struct sockaddr
{
unsigned short sa_family; /*地址族*/
char sa_data[14]; /*14字节的协议地址,包含该socket的IP地址和端口号。*/
};
struct sockaddr_in
{
short int sa_family; /*地址族*/
unsigned short int sin_port; /*端口号*/
struct in_addr sin_addr; /*IP地址*/
unsigned char sin_zero[8]; /*填充0 以保持与struct sockaddr同样大小*/
};
这两个数据类型是等效的,可以相互转化,通常sockaddr_in数据类型使用更为方便。在建立socketadd或sockaddr_in后,就可以对该socket进行适当的操作了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:sockaddr,socket,协议,编程,基础,网络,地址,接字,struct
From: https://www.cnblogs.com/cnetsa/p/17004643.html

相关文章

  • Java编程思想13
    第十八章:JavaI/O系统对程序语言的设计者而言,创建一个好的输入/输出(I/O)系统是一项艰难的任务。File类既能代表一个特定文件的名称,又能代表一个目录下一组文件的名称。下......
  • .net 基础服务开源战略规划备忘录
    .net开源技术方向战略备忘记录公司现状1.技术人员水平限制:基础研发人员技术细节,性能处理能力不足,技术视野不够开阔;甚至一些高可用,高性能方案......
  • 特征点寻找的基础数据结构和函数
       当进行跟踪时或者其他类型的用到关键点及其描述符的分析时,通常需要做三件事情:第一个是根据一些关键点的定义搜索图像并查找该图像中的所有关键点;第二个是为发现......
  • 线程基本编程
         ......
  • 巨蟒python全栈开发数据库前端1:HTML基础
     1.HTML介绍什么是前端?前端就是我们打开浏览器的页面.,很多公司都有自己的浏览器的页面,这个阶段学习的就是浏览器界面比如京东的界面:https://www.jd.com/ 引子例1 soc......
  • 进程编程基础
    fork()fork()函数用于从已存在的进程中创建一个新进程。新进程称为子进程,而原进程称为父进程。使用fork()函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个......
  • 网络服务考点复习
    第一章信息安全测评思想1.信息安全测评需要具备的科学精神:怀疑、批判、创新、求实、协作2.信息安全测评最主要的方法是系统科学/系统工程的方法3.系统科学的三层含义:......
  • 【编程基础】正则表达式基本使用及在Python中使用正则表达式匹配内容
    前言当接触一个新知识点或者技术时,只要问完哲学中的三大问题,基本就对这个知识点或者技术有大致的了解,这也是我学习一个新技术常用的方法,那到底是哪三大问题呢?是什么?怎么做,为......
  • 标准I/O编程
    标准I/O提供流缓冲的目的是尽可能减少使用read()和write()等系统调用的数量。标准I/O提供了3种类型的缓冲存储。全缓冲:在这种情况下,当填满标准I/O缓存后才进行实际I/O操......
  • 【编程实践】出行无忧,利用Python爬取天气预报
    前言天气预报就是应用大气变化的规律,根据当前及近期的天气形势,对某一地未来一定时期内的天气状况进行预测。它是根据对卫星云图和天气图的分析,结合有关气象资料、地形和季节......