回射程序3(客户端)——客户服务器不定长接收数据

又是一个回射程序!!!!

毕竟还是一只小菜鸟,多练练,多写写没有坏处滴!

这次的回射程序思路如下:


客户端和服务器都使用了新的函数recvvl来接收数据了!!这是一个自己编写的函数,主要作用是接收不定长的数据。

整个程序的设计思路是这样的:

客户端首先将消息体的长度发送给服务器,再将消息体发送给服务器。

在服务器端先接收到消息体的长度,紧接着根据该长度接收相应的数据。

虽然上面接收数据看上去要用两步,但是我们把它放在同一个函数中了!

该函数的实现需要调用前面编写的recvn函数。其实现如下:

int recvvl(SOCKET s, char * recvbuf, unsigned int recvbuflen)
{
	int iResult;//存储单次recvn操作的返回值
	unsigned int reclen; //用于存储报文头部存储的长度信息
	//获取接收报文长度信息
	iResult = recvn(s, ( char * )&reclen, sizeof( unsigned int ));
	//printf("reclen:%d\n",reclen);
	if ( iResult !=sizeof ( unsigned int )) {
		//如果长度字段在接收时没有返回一个整型数据就返回(连接关闭)或-1(发生错误)
		if ( iResult == -1 ) {
			printf("接收发生错误: %d\n", WSAGetLastError());
			return -1;
		}
		else {
			printf("连接关闭\n");
			return 0;
		}
	}
	//转换网络字节顺序到主机字节顺序
	reclen
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值