当前位置: 首页 > article >正文

C语言socket编程----实现TCP通信

TCP/IP协议(Transmission Control Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通信协议。实际上,它包含上百个功能的协议,如ICMP(互联网控制信息协议)、FTP(文件传输协议)、UDP(用户数据包协议)、ARP(地址解析协议)等。TCP负责发现传输的问题,一旦有问题就会发出重传信号,直到所有数据安全正确的传输到目的地。

套接字(socket):在网络中用来描述计算机中不同程序与其他计算机程序的通信方式。socket其实是一种特殊的IO借口,也是一种文件描述符。

套接字分为三类:

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

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

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


套接字由三个参数构成:IP地址,端口号,传输层协议。

这三个参数用以区分不同应用程序进程间的网络通信与连接。

套接字的数据结构:C语言进行套接字编程时,常会使用到sockaddr数据类型和sockaddr_in数据类型,用于保存套接字信息。

两种结构体分别表示如下:

struct sockaddr
{//地址族,2字节unsigned short sa_family;//存放地址和端口,14字节char sa_data[14];
}struct sockaddr_in
{//地址族short int sin_family;//端口号(使用网络字节序)unsigned short int sin_port;//地址struct in_addr sin_addr;//8字节数组,全为0,该字节数组的作用只是为了让两种数据结构大小相同而保留的空字节unsigned char sin_zero[8]
http://www.lryc.cn/news/2414093.html

相关文章:

  • 【C语言】常见面笔试题(10道)
  • 全景图像拼接
  • 关于led电源设计
  • c++中静态函数与动态函数的区别
  • 深度学习(四)卷积神经网络-卷积神经网络(3) -Andrew Ng
  • sockaddr和sockaddr_in的区别
  • printf输出格式
  • 167.Web前端网页制作 大气的UI设计平台网页实例 大学生期末大作业
  • Cache(三):cache的常见名词与Cache一致性问题简介
  • mysql安装程序错误代码2503,Win10安装程序错误2502/2503的解决方法
  • CompareNoCase与Compare
  • matlab函数imfilter和 opencv中filter2D函数的对应关系
  • Windows 开机启动 | 启动项管理
  • 在IOS中使用AVPlayer去播放在线音频文件,并设置音量
  • 有道翻译接口逆向_python有道翻译api(2)
  • JSP基于web2.0的超市商品管理系统3sq6z程序+源码+数据库+调试部署+开发环境
  • 【学习资源】C#初学者学习资源推荐
  • Rosetta Tutorial 5/7/9 翻译 | 主要为 Scoring Packer Tutorial 部分
  • MPEG TS流简介
  • 云计算比赛私有云题目
  • git创建分支,提交分支,删除分支的开发流程
  • Spring 自动定时任务配置
  • 【JavaScript】用于模拟 word 生成网页页面的插件
  • DuplicateHandle的应用
  • 逆向破解crackme简要分析
  • SCJP基本概念
  • 数字逻辑实验——138译码器
  • Linux之ClamAV杀毒软件YUM安装和使用
  • 外网如何访问公司内网?
  • 使用C#中的CultureInfo类实现全球化