嵌入式,Linux网络编程

简介: linux网络编程通过套接字(socket)实现,socket是一种文件描述符 socket三种类型:流式套接字SOCK_STREAM,提供可靠的、面向连接的通讯流,使用TCP协议,保证通信可靠性和顺序性                         ...

linux网络编程通过套接字(socket)实现,socket是一种文件描述符

socket三种类型:流式套接字SOCK_STREAM,提供可靠的、面向连接的通讯流,使用TCP协议,保证通信可靠性和顺序性

                            数据报套接字SOCK_DGRAM,定义一种无连接服务,数据通过独立报文传输,无序,不保证可靠, 使用UDP

                            原始套接字SOCK_RAW使用IP协议,用于新型的网络测试

网络地址:struct  sockaddr{

                            u_short  sa_family; 协议族

                            char  sa_data[14];  协议地址 

                                    }

                  struct  sockaddr_in{

                             short  int  sin_family;                          协议族

                             unsigned  short int  sin_port;             端口号

                             struct  int_addr   sin_addr;                 协议地址

                             unsigned  char  sin_zero[8];               填0                 

                                  }

                  typedef  struct in_addr{

                                union{

                                         struct{

                                                  unsigned  char  s_b1;

                                                  s_b2;

                                                  s_b3;

                                                  s_b4;

                                                  }S_un_b;

                                        struct{

                                                  unsigned  short  s_w1;

                                                  s_w2;

                                                 }S_un_w;

                                        unsigned  long  S_addr;

                                         }S_un;

                                  }IN_ADDR;

地址转换:IP通常是192.168.1.1形式,而struct  in_addr的IP 地址由32位整数表示

                  int  inet_aton(const char  *cp,struct  in_addr  *inp)  将a.b.c.d形式转换为32位形式,存储在inp

                  char *inrt_ntoa(struct  in_addr in)  将32位地址转换为啊,a.b.c.d

字节顺序转换:不同类型的cpu对变量的字节存储方式不一样,有的高位前低位后,有的低位前高位后。而网络字节顺序统一为高位前

                        htons   把unsigned  short类型从主机序转换为网络序

                        htonl    把unsigned  long类型从主机序转换为网络序

                        ntohs   把unsigned  short类型从网络序转为主机序

                        ntohl   把unsigned  longt类型从网络序转为主机序

网络上标识一台主机可以用IP地址,或者主机名

              struct  hostent  *gethostbyname(const char *hostname){

                        char *h_name;                  主机正式名       

                        char *h_aliases;             主机别名

                        int  h_addrtype;              主机地址类型

                        int  h_length;                  地址长度

                        char **h_addr_list ;         IP地址列表

                                    };

             #define  h_addr  h_addr_list[0]


UDP网络程序设计

UDP服务器:创建一个socket,用函数socket()

                     绑定IP地址、端口号等信息到socket,用函数bind()

                     循环接收数据,用函数recvfrom()

                     关闭网络链接

UDP客户端:创建一个socket,用函数socket()

                     绑定IP地址、端口号等信息到socket,用函数bind()

                     设置对方IP地址和端口号等信息

                     发送数据,sendto()

                     关闭网络链接


TCP网络程序设计

TCP服务器:创建一个socket,用函数socket()

                     绑定IP地址、端口号等信息到socket,用函数bind()

                     设置允许的最大链接数,listen()

                     等待来自客户端的链接请求,accept()

                     收发数据,用函数send和recv(),或者read()和write()

                     关闭网络链接

TCP客户端:创建一个socket,用函数socket()

                     设置要链接服务器的IP地址和端口号等信息

                     链接服务器,connect()

                     收发数据,用函数send和recv(),或者read()和write()

                     关闭网络链接


相关文章
|
24天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
60 2
|
3月前
|
安全 Linux 网络安全
Web安全-Linux网络协议
Web安全-Linux网络协议
78 4
|
1月前
|
域名解析 网络协议 安全
|
2月前
|
运维 监控 网络协议
|
1月前
|
存储 Ubuntu Linux
2024全网最全面及最新且最为详细的网络安全技巧 (三) 之 linux提权各类技巧 上集
在本节实验中,我们学习了 Linux 系统登录认证的过程,文件的意义,并通过做实验的方式对 Linux 系统 passwd 文件提权方法有了深入的理解。祝你在接下来的技巧课程中学习愉快,学有所获~和文件是 Linux 系统登录认证的关键文件,如果系统运维人员对shadow或shadow文件的内容或权限配置有误,则可以被利用来进行系统提权。上一章中,我们已经学习了文件的提权方法, 在本章节中,我们将学习如何利用来完成系统提权。在本节实验中,我们学习了。
|
2月前
|
Ubuntu Linux 虚拟化
Linux虚拟机网络配置
【10月更文挑战第25天】在 Linux 虚拟机中,网络配置是实现虚拟机与外部网络通信的关键步骤。本文介绍了四种常见的网络配置方式:桥接模式、NAT 模式、仅主机模式和自定义网络模式,每种模式都详细说明了其原理和配置步骤。通过这些配置,用户可以根据实际需求选择合适的网络模式,确保虚拟机能够顺利地进行网络通信。
|
2月前
|
网络协议 安全 Ubuntu
Linux中网络连接问题
【10月更文挑战第3天】
36 1
|
2月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
60 0
|
2月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
43 0
|
3月前
|
机器学习/深度学习 安全 网络协议
Web安全-Linux网络命令
Web安全-Linux网络命令
32 1