摘要: tcp 编程一般的步骤:server(服务端)1.new 个 socket2.bind (IP,port)3.listen,等待客户端的连接4.accept 接受客户端的连接5.接收(recv) 发送数据(send)6.关闭连接 client(客户端)1.new 个 socket2.bind(ip, 阅读全文
posted @ 2020-06-19 17:44 卖雨伞的小男孩 阅读(576) 评论(0) 推荐(0) 编辑
摘要: 粘包出现原因 简单得说,在流传输中出现,UDP不会出现粘包,因为它有消息边界(参考Windows网络编程) 1发送端需要等缓冲区满才发送出去,造成粘包 2接收方不及时接收缓冲区的包,造成多个包接收 具体点: (1)发送方引起的粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够 阅读全文
posted @ 2020-06-19 15:48 卖雨伞的小男孩 阅读(1072) 评论(0) 推荐(0) 编辑
摘要: 完成三次握手,客户端与服务器开始传送数据 A与B建立TCP连接时:首先A向B发SYN(同步请求),然后B回复SYN+ACK(同步请求应答),最后A回复ACK确认,这样TCP的一次连接(三次握手)的过程就建立了! 一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是 阅读全文
posted @ 2020-06-19 15:46 卖雨伞的小男孩 阅读(371) 评论(0) 推荐(0) 编辑
摘要: std::ref只是尝试模拟引用传递,并不能真正变成引用,在非模板情况下,std::ref根本没法实现引用传递,只有模板自动推导类型时,ref能用包装类型reference_wrapper来代替原本会被识别的值类型,而reference_wrapper能隐式转换为被引用的值的引用类型。 std::r 阅读全文
posted @ 2020-06-19 14:46 卖雨伞的小男孩 阅读(630) 评论(0) 推荐(0) 编辑
摘要: 网络中的接收和发送数据都是使用SOCKET进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。可是如何判断这个套接字是否还可以使用呢?这个就需要在系统中创建心跳机制。其实TCP中已经为我们实现了一个叫做心跳的机制。如果你设置了心跳,那TCP就会在一定的时间(比如你设置的是3 阅读全文
posted @ 2020-06-19 14:42 卖雨伞的小男孩 阅读(335) 评论(0) 推荐(0) 编辑