win socket接收数据的问题,帮忙看看。
win socket接收数据的问题,帮忙看看。
网络环境:
1. Server,client 端 均运行在windows系统下,均采用TCP协议,异步方式。
2. 只有一个client去访问server
3. client发送和server接收的频率基本一致,基本不会有client发送多次,server才接收一次的情况。
4. 为保证数据正确性 client 发送的时候组了个TLV结构的包,包比较小,保证不超过10个字节。
我看见有些人的做法是,先接收 T 和 L 部分,算出L后再用while来循环接收 V 部分。
我的理解:
1. V 部分比较大的时候采用上述方法是适合的。
2. 在上述4个条件下,server端待接收的数据比较小,
能否在Server端接收的时候开 1K 的 buffer,直接写recv(socket, buf, 1024),
然后判断buf中TLV包的有效性,(buf中有可能有多个TLV包)
如果判断到TAG非法或包长度不符合期望,则直接认为异常,不需要再recv后续数据了。
请问这种观点正确吗?1和2都评定下哦