socket模型

Socket概念

Linux 中的网络编程是通过 socket 接口来进行的。socket 是一种特殊的 I/O 接口,它也是一种文件描 述符。它是一种常用的进程之间通信机制,通过它不仅能实现本地机器上的进程之间的通信,而且通过 网络能够在不同机器上的进程之间进行通信。

每一个 socket 都用一个半相关描述{协议、本地地址、本地端口}来表示;一个完整的套接字则用一 个相关描述{协议、本地地址、本地端口、远程地址、远程端口}来表示。socket 也有一个类似于打开文 件的函数调用,该函数返回一个整型的 socket 描述符,随后的连接建立、数据传输等操作都是通过 socket 来实现的;

socket类型

(1)流式 socket(SOCK_STREAM) 用于 TCP 通信

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

(2)数据报 socket(SOCK_DGRAM) 用于 UDP 通信

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

(3)原始 socket(SOCK_RAW) 用于新的网络协议实现的测试等

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

socket信息数据结构

struct sockaddr
{ 
   unsigned short sa_family; //地址族
      char sa_data[14]; //14字节地址协议
};
struct sockaddr_in
{ 
   short int sa_family;
   unsigned short int sin_port;//端口号
   struct in_addr sin_addr;//ip地址
   unsigned char sin_zero[8];
};
sa_family:AF_INET  是IPv4协议(一般都用这个) AF_INET6  IPv6协议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值