网络编程
文章平均质量分 65
黑马课程
奋斗的小方
菜鸡
展开
-
一个简单的基于C/S模型的TCP通信实例
网络编程学习的第一个案例程序原创 2023-05-28 01:21:06 · 851 阅读 · 0 评论 -
06 网络套接字函数
典型的服务器程序可以同时服务于多个客户端,当有客户端发起连接时,服务器调用的accept()返回并接受这个连接,如果有大量的客户端发起连接而服务器来不及处理,尚未accept的客户端就处于连接等待状态,listen()声明sockfd处于监听状态,并且最多允许有backlog个客户端处于连接待状态,如果接收到更多的连接请求就忽略。客户端需要调用connect()连接服务器,connect和bind的参数形式一致,区别在于bind的参数是自己的地址,而connect的参数是对方的地址。原创 2023-05-22 22:51:35 · 48 阅读 · 0 评论 -
04 sockaddr数据结构
IPv4和IPv6的地址格式定义在中,IPv4地址用sockaddr_in结构体表示,包括16位端口号和32位IP地址,IPv6地址用sockaddr_in6结构体表示,包括16位端口号、128位IP地址和一些控制字段。UNIX Domain Socket的地址格式定义在sys/un.h中,用sock-addr_un结构体表示。各种socket地址结构体的开头都是相同的,前16位表示整个结构体的长度(并不是所有UNIX的实现都有长度字段,如Linux就没有),后16位表示地址类型。原创 2023-05-22 22:15:24 · 252 阅读 · 0 评论 -
03 IP地址转换函数
af 参数指定了地址族,可以是 AF_INET(IPv4)或 AF_INET6(IPv6)src 参数是一个指向以点分十进制表示的IP地址字符串的指针。dst 参数是一个指向用于存储转换结果的缓冲区(内存)的指针。函数将点分十进制的IP地址转换为。原创 2023-05-21 23:43:19 · 81 阅读 · 0 评论 -
02 网络字节序
例如上一节的UDP段格式,地址0-1是16位的源端口号,如果这个端口号是1000(0x3e8),则地址0是0x03,地址1是0xe8,也就是先发0x03,再发0xe8,这16位在发送主机的缓冲区中也应该是低地址存0x03,高地址存0xe8。发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存,因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。TCP/IP协议规定,原创 2023-05-21 23:23:59 · 68 阅读 · 0 评论 -
01 套接字概念
Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字。与管道类似的,Linux系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写文件的操作一致。区别是管道主要应用于本地进程间通信,而套接字多应用于网络进程间数据的传递。在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程。“IP地址+端口号”就对应一个socket。欲建立连接的两原创 2023-05-21 23:06:13 · 36 阅读 · 0 评论