对于 TCP 客户端编程流程,有点类似于打电话过程:找个可以通话的手机( socket() ) -> 拨通对方号码并确定对方是自己要找的人( connect() ) -> 主动聊天( send() 或 write() ) -> 或者,接收对方的回话( recv() 或 read() ) -> 通信结束后,双方说再见挂电话( close() )。
对于 TCP 服务器编程流程,有点类似于接电话过程:找个可以通话的手机(socket() ) -> 插上电话卡固定一个号码( bind() ) -> 职责为被动接...
分类:
系统相关 时间:
2015-05-12 13:38:13
阅读次数:
366
状态图 1
状态图 2
对于上面的图 N 多人都知道,它排除和定位网络或系统故障时大有帮助,但是怎样牢牢地将这张图刻在脑中呢?那么你就一定要对这张图的每一个状态,及转换的过程有深刻的认识,不能只停留在一知半解之中。下面对这张图的11种状态详细解析一下,以便加强记忆!不过在这之前,先回顾一下 TCP
建立连接的三次握手过程,以及关闭连接的四次握手过程,详情请看《浅谈 TCP...
分类:
其他好文 时间:
2015-05-11 20:08:12
阅读次数:
163
基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下:
connect()函数
对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三次握手(这个后面再做介绍),而这个连接的过程是由内核完成,不是这个函数完成的,这个函数的作用仅仅是通知
Linux 内核,让 Linux 内核自动完成 TCP 3次握手连接,最后把连接...
分类:
其他好文 时间:
2015-05-10 18:57:31
阅读次数:
126
一、linux下TCP网络编程基础,需要了解相关函数Socket():用于套接字初始化。Bind():将socket与本机上的一个端口绑定,就可以在该端口监听服务请求。Listen():使socket处于被动的监听模式,并为该socket建立一个输入数据队列,将到达的服务器,请求保存在此队列中,直到...
TCP 报文格式
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP 报文段的报头有 10 个必需的字段和 1 个可选字段。报头至少为 20 字节。报头后面的数据是可选项。
1)源端口(16位)
标识发送报文的计算机端口或进程。一个 TCP 报文...
分类:
系统相关 时间:
2015-04-08 16:28:35
阅读次数:
291
TCP网络编程流程套接字 struct
sockaddr{ //通用套接字数据结构 sa_family_t
sa_family; //协议族 char
sa_data[14]; //协议族数据 } 实际使用sockaddr_in,在bind时或connect时再强行转换 struct
sockaddr_in{ //以太网套接字数据结构 u8
sin_len; u8
sin_familly; u16
sin_por..
分类:
其他好文 时间:
2015-02-26 11:55:04
阅读次数:
168
TCP网络编程
转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空)
从上面一节内容可以知道,利用UDP通信的两个程序是平等的,无主次之分,两个程序代码可以完全一样。但利用TCP协议进行通信的两个应用程序,是有主从之分的,一个称为服务器程序,另外一个称为客户机程序。Java中提供了ServerSocket类用于创建服务器端的socket,Sock...
分类:
编程语言 时间:
2015-02-09 11:08:14
阅读次数:
353
写在开头:
在上一节中我们学习了一些基础的用来支持网络编程的API,包括“套接字的地址结构”、“字节排序函数”等。这些API几乎是所有的网络编程中都会使用的一些,对于我们正确的编写网络程序有很大的作用。在本节中我们会介绍编写一个基于TCP的套接字程序需要的一些API,同时会介绍一个完整的TCP客户服务器程序,虽然这个程序功能相对简单,但确包含了一个客户服务器程序所有的步骤,一些复杂的程序也都是在...
一、linux下TCP网络编程基础,需要了解相关函数Socket():用于套接字初始化。Bind():将socket与本机上的一个端口绑定,就可以在该端口监听服务请求。Listen():使socket处于被动的监听模式,并为该socket建立一个输入数据队列,将到达的服务器,请求保存在此队列中,直到...
我们知道,tcp网络编程发送数据是利用套接字来实现,将要传输的东西转化为数据流再进行传输,为了确保数据传输的准确性和安全性,我们在发送数据流前发送一个quint32的常量来表示所要发送的数据的大小;当我们要发送图片时,最关键的是获得图片的大小:QBuffer buffer;QPixmap(":/im...
分类:
其他好文 时间:
2015-01-06 09:47:22
阅读次数:
370