如何解决这个问题,请高手支招,在线等.....
在为网络通讯中,使用send(socket s, char *buf,int len,0)传输数据
在该函数中,不管buf中数据的具体情况,len长度的数据都被传输,这样保证了任意数据都能在网上传输(即便是buf中某个位置出现了字符串结束符\0,后面的数据也能被传输)但在数据处理过程中,如果发生buf调用,则\0之后的数据都被截断,于是出现以下问题:
假设从X文件中读取一段数据,保存在char *a1中,之后调用某个DLL中的函数f(x)对a1进行加密(假设是等长度加密),加密结果(a2)很可能在中间有\0,于是从DLL返回的数据a2的长度有可能小于a1,再使用send发送a2,只能发送一部分数据,造成接收端解密失败!
目前能想到的办法是将a2转移到业务处理模块中,这样,即使a2中有\0,也能全部发送,但加密算法泄露了!否则,只能对从文件中提取的数据不加密。问题:如何将从任意文件中读取的数据,使用DLL中的函数进行加密,加密结果不管是否包含\0,都返回到调用函数中?