网络基础编程

网络基础编程:

       网络基础编程主要介绍传输层中的TCP和UDP协议,TCP和UDP是两种不同的网络传输方式。

1、TCP

      通常应用程序通过打开一个socket来使用TCP服务,TCP管理到其他socket的数据传递。可以说,通过IP源/目的可以唯一的区分网络中两个设备的关联,通过socket的源/目的可以唯一的区分网络中两个应用程序的关联。

三次握手协议:

      TCP对话通过三次握手来初始化,三次我是的目的是使数据段的发送和接收同步;告诉其他主机其一次可接收的数据量,并建立虚连接。下面简单描述了三次握手的过程:

1、初始化主机通过一个同步标志置位的数据段发出会话请求;

2、接收主机通过发回具有以下项目的数据段表示回复:同步标志置位、即将发生的数据段的起始字节的顺序号、应答并带有将受到的下一个数据段的字节顺序号。

3、请求主机再回送一个数据段,并带有确认顺序号和确认号。

       TCP实体所采用的基本协议是滑动窗口协议。当发送方传送一个数据报时,它将启动计时器。当该数据报到达目的地后,接收方的TCP实体将回送一个数据报,其中包含有一个确认序号,它的意思是希望收到下一个数据报的顺序号。如果发送方的定时器在确认信息到达之前超时,那么发送发重发该数据报。

2、UDP

       UDP即用户数据报协议,它是一种无连接协议,因此不需要像TCP那样通过三次握手来建立一个连接。同时,一个UDP应用可以同时作为应用的客户或服务器方。由于UDP协议并不需要建立一个明确的连接,因此建立UDP应用要比建立TCP应用简单得多。UDP比TCP更能更好地解决实时性问题,如今,包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都使用UDP协议。

面向连接的套接字通信(TCP)

1、基于TCP协议编程相关函数说明

socket:用于建立一个socket 连接;

bind:将socket与本机上的一个端口绑定,随后就可以在该端口监听服务请求;

connect:面向连接的客户程序使用connect 函数来配置 socket ,并与远端服务器建立一个TCP连接;

listen:listen函数使 socket 处于被动的监听模式,并为该 socket 建立一个输入数据队列,将到达的服务器

             请求保存在此队列中,直到程序处理他们;

accept: accept 函数让服务器接收客户的连接请求;

close:停止在该 socket 上的任何数据操作;

send: 数据发送函数

recv:数据接收函数

 

————————————————————————————————

socket函数语法:

所需头文件: #include<sys/socket.h>

函数原型:int  socket (int   family,int  type,int  protocol)

函数传入值:family协议族:AF_INET等

                      type:套接字类型:SOCK_STREAM,SOCK_DGRAM,SOCK_RAW

                      protocol:0

函数返回值:成功:非负套接字描述符,失败:-1

————————————————————————————————

bind函数语法:

所需头文件:同上;

函数原型: int   bind (int  sockfd,struct   sockaddr  *my_addr,int  addrlen)

函数传入值: sockfd:套接字描述符

                       my_addr:本地地址

                       addrlen:地址长度

函数返回值:成功,0;失败,-1

————————————————————————————————

listen函数语法:

所需头文件:同上

函数原型: int  listen (int  sockfd,int  backlog)

函数传入值:sockfd,套接字妙手

                      backlog,请求队列中允许的最大请求数;

返回值:成功,0;失败,-1

————————————————————————————————

accept函数语法:

函数原型:int accept(int sockfd,struct  sockaddr  *addr,socklen_t  *addrlen)

函数传入值:sockfd,套接字描述符

                      addr,客户端地址

                      addrlen:地址长度

函数返回值:成功,0;失败,-1

————————————————————————————————

 

connect函数语法:

函数原型:int connect(int   sockfd,struct  sockaddr  *serv_addr,int   addrlen)

函数传入值:serv_addr:服务器端地址

返回值:同上

 

send函数语法:

函数原型:int   send (int   sockfd,const  void  *msg,int  len ,int  flags)

函数传入值:msg,指向要发送数据的指针

                      len,数据长度

                      flags,一般为0

函数返回值:同上

———————————————————————————————— 

recv函数语法:

函数原型:int  recv(int  sockfd,void  *buf,int  len,unsigned int  flags)

函数传入值:buf,存放接收数据的缓冲区

                      len,数据长度

                      flags:一般为0

返回值,同上。

 

———————————————————————————————— 

这节就讲这么多,下节继续网络编程的实例分析。^_^大笑

 

 

你可能感兴趣的:(网络基础编程)