这几天连着修改了好几个tcp方面的bug,也算是有了一个基本的认识吧,
tcp在n720里面从srv到open,到write,read,ack,再到close。基本的流程大致如下吧,简单说一下。
srv配置tcp的一些参数,在这里面,主要做了2件事,
一件事就是解析发送过来数据,ip地址,还有port的组成,udp,svr的选择,还有通道的判断,
第二件事就是配置一些tcp的参数,比如现在的状态。
open就比较麻烦了,这个步骤会建立socket连接,然后绑定端口,ip地址,设置一些全局变量,
获取socketid号是通过函数dss_socket的返回值获取的,
dss_socket_opetion是对socket进行设置,
dss_connnet是连接tcp的步骤,不过在这里会有一步就是,他会触发回调函数,在handler里面进入write_event 判断,然后在里面再度调用dss_connect函数进行连接,所以第一遍是连接,然后第二遍是验证是否连接成功并且获取可读写空间,
read就是在上报之后进入handler函数里面进入read_event判断读取数据,
write的流程是现在write cmd里面设置一个回调函数,并且设置一个标志量,然后在process_lineXXX的函数里面接收数据,并且调用回调函数,在出发write_event时间,进行数据发送
ack的主要作用就是查询数据是否正常发送,在tcp_in这文件夹里面有一个函数专门处理,对接收到的数据进行加减,
close比较麻烦,因为这个tcp协议,他的close必须执行两次才会成功,所以第一遍执行dss_close基本没啥用,唯一的用处就是触发了回调函数handler,然后在回调函数里面再执行一遍close,才算是成功,