直接粘代码:
1: CString str1; //定义两个MFC里面的CString里面的字符串
2: CString str2;
3: str1.Format("(%d)",matrix.Num); //将str1格式化为此种结构,这句话等于 str1 = “变量”。用他来将某个数据类型转换为字符串类型。
4: str2 = str2 + str1;
5: for(int i = 0; i < obs ;i++)
6: {
7: str1.Format("(%d,%d)",matrix.point[i].x,matrix.point[i].y);
8: str2 = str2 + str1; //将str1连接到str2的后面。 此中的 + 为连接符。
9: }
10: //str2 = str2 + "end";
//首先这个GetBuffer主要用来把CString对象的字符串转c类型的字符串用的,CString对象中有一个缓冲区,GetBuffer返回的应该是它的一份拷贝,而你需要为这份拷贝设置一个最小长度。
11: string str_war(str2.GetBuffer(str2.GetLength())); //将MFC里面的CString字符串转为C语言里面的字符串。string str_war(),这个是定义并赋值的意思。
12: char* buf=(char*)malloc(10000); //buf是指针,但我们可以指定其大小。
13: memset(buf,0,10000); //开辟空间,赋值为0.这两句其实就是定义了一个字符型数组。
14: memcpy(buf,str_war.c_str(),str_war.size()); //c_str()是string类的一个成员函数, 返回常量char *类型的C风格字符串。其实按这种方法也可以实现变长的问题。
下面是udp发送函数
iSend=sendto(sClient,buf,str_war.size(),0,(struct sockaddr*)&ser,iLen);//在这里我们可以指定buf的长度,这个很重要。
UDP接收端,收到的数据如下图所示: 第一个表示非零点的个数。其他的表示各个点的x与y坐标。