我刚刚在我的C ++项目上激活了CLR支持,以便能够使用ODBC的功能。我目前正在使用这个项目从另一个使用sokcets获取一些数据,所以,这个项目是一个监听器,它在运行时不断监听一个已定义的端口号。
所以,当我激活CLR支持时,我遇到了一些字符串问题。这是我正在运行的代码片段:
typedef struct thread_args{
SOCKET ClientSocket;
int index;
} *MYDATA, PM;
MYDATA pDataArray[100];
struct thread_args *fp;
fp = (struct thread_args *) pVoid;
int iResult;
unsigned char recvbuf[65536];
iResult = recv(fp->ClientSocket, (char*)recvbuf, 65536, 0);
因此,在激活之前,recvbuf
获取值(当我从其他项目发送数据时):
qpsdjqspdjqsdsqsdsq +++ qsdsqdqsdqsdqsdiqsbdoiqsdbqsoidbqsiodbqsduqbiqsiudqiduqsbdqskdbqskdsqbkdbsqkqsjdbsqkdbqskjdbqskdbkqsjbdqkbsdqkdbqkdsbqkdbsqkbdkqdbqskbdkqbd
然后,它获得了价值:
qpsdjqspdjqsdsqsdsq +++
+++
之后,只有''
个字符,没有'\0'
。我如何获得完整的字符串?
请注意,我正在使用+++
来区分已发送的字符串。