希望把以下C++代码改成C#,非常感谢!
CString strSend ="XXXXXBBBBBBBBBBBBBBBBBB";
int len=senddata(strSend.GetBuffer(strSend.GetLength()),strSend.GetLength());
int CVC6ClientDlg::senddata(char * buf,int num)
{
char sendbuf[512];
memcpy(sendbuf,buf,num);
sendbuf[num]='\n';
return SSL_writego(ssl, sendbuf, num+1);
}
------解决方案--------------------
String strSend = "XXXXXBBBBBBBBBBBBBBBBBB";
byte[] byteSend = Encoding.UTF8.GetBytes(strSend);
int len = senddata(byteSend, byteSend.Length);
int senddata(byte[] buf, int num)
{
byte[] sendbuf = new byte[num+1];
buf.CopyTo(sendbuf, 0);
sendbuf[num] = (byte)'\n';
return SSL_writego(ssl, sendbuf, num+1);
}
注意那句Encoding.UTF8.GetBytes()
接收端要用Encoding.UTF8.GetString()
也可能是别的编码格式,统一就好
------解决方案--------------------
相当C++的char sendbuf[512];
的是
byte[] sendbuf = new byte[512];
不过这样写不好,若是senddata超过512,就越界了。
而我的写法
byte[] sendbuf = new byte[num+1];
则不会有问题。