各位大神,请指教!
VS2015,MFC,C++,用AfxSocketInit()函数加载的套接字,用socket()函数创建套接字,TCP形式
确认服务器与客户端连接成功以后,服务器向客户端发送数据,进行以下实验:
实验1:
步骤1:客户端执行recv(SockClient, recvtext1, 100, 0)函数,执行后,进入阻塞。
步骤2:服务端执行int abc1 = send(sockConn, sendtext1, strlen(sendtext1)+1 , 0)函数,执行后,步骤 1中的recv函数解除阻塞,recvtext1中内容与服务器的发送数据一致。
步骤3:客户端执行recv(SockClient, recvtext2, 100, 0)函数,执行后,进入阻塞。
步骤4:服务端执行int abc2 = send(sockConn, sendtext2, strlen(sendtext2)+1 , 0)函数,执行后,步骤 3中的recv函数解除阻塞,recvtext2中内容与服务器的发送数据一致。
结果:数据正常。
实验2:
步骤1:服务端执行int abc1 = send(sockConn, sendtext1, strlen(sendtext1)+1 , 0)函数,执行后,abc1 为5,与发送数据量一致,表示发送成功。
步骤2:客户端执行recv(SockClient, recvtext1, 100, 0)函数,执行后,recvtext1中内容与服务器的发送 数据一致。
步骤3:服务端执行int abc2 = send(sockConn, sendtext2, strlen(sendtext2)+1 , 0)函数,执行后,abc2 为5,与发送数据量一致,表示发送成功。
步骤4:客户端执行recv(SockClient, recvtext2, 100, 0)函数,执行后,recvtext2中内容与服务器的发送 数据一致。
结果:数据正常。
实验3:
步骤1:服务端执行int abc1 = send(sockConn, sendtext1, strlen(sendtext1)+1 , 0)函数,执行后,abc1 为5,与发送数据量一致,表示发送成功。
步骤2:服务端执行int abc2 = send(sockConn, sendtext2, strlen(sendtext2)+1 , 0)函数,执行后,abc2 为5,与发送数据量一致,表示发送成功。
步骤3:客户端执行recv(SockClient, recvtext1, 100, 0)函数,执行后,recvtext1中内容为服务器第一次 发送的数据,即sendtext1。
疑问:为什么接收到的内容不是sendtext1+sendtext2?为什么sendtext2被丢弃了?在哪个环节出的问题,如 果想在步骤3中收到sendtext1+sendtext2(即多次send,1次recv时)应该怎么改?