请教用socket如何向服务器端发送16进制数据

请问用socket怎么向服务器端发送16进制数据?
我用抓包工具抓到一程序向服务端发的包的十六进制数据为:
23 1A 00 00 00 CC C4 14 00 0A 40 C5 00 D9 E4 22 33 1F 98 7C;
ASCII数据为:
#...?.@?黉"3榺
用抓包工具自带的发送功能把上面这段十六数据发送过去,服务端能做出正确的响应.
但当我自己编程把这段十六进制数据发送过去时,服务端却响应不了,这时用抓包工具
抓到的十六进制数据为:
32 33 20 31 41 20 30 30 20 30 30 20 30 30 20 43 43 20 43 34 20 31 34 20 30 30 20 30 41 20 34 30 20 43 35 20 30 30 20 44 39 20 45 34 20 32 32 20 33 33 20 31 46 20 39 38 20 37 43 00
ASCII数据为:
23.1A.00.00.00.CC.C4.14.00.0A.40.C5.00.D9.E4.22.33.1F.98.7C.
代码如下:
//从对话框接收输入的数据(23 1A 00 00 00 CC C4 14 00 0A 40 C5 00 D9 E4 22 33 1F 98 7C)到m_StrSend中,并利用消息通知发送数据.
void CDlg::OnBtnSend()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData();
HWND hwnd =::FindWindow(NULL,"xxxxxxx");
//COPYDATASTRUCT结构是WM_COPYDATA传递的数据结构对象
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = m_StrSend.GetLength(); //传递的数据长度
cpd.lpData = (void*)m_StrSend.GetBuffer(cpd.cbData); //传递的数据地址
::SendMessage( hwnd, WM_COPYDATA, 0, (LPARAM) & cpd );



}
void OnCopyData(WPARAM wParam,LPARAM lParam)
{
PCOPYDATASTRUCT mydata= (PCOPYDATASTRUCT) lParam;
CString strsend=(LPCSTR)mydata->lpData;
strsend=strsend.Left(mydata->cbData);


char *p =(LPTSTR)(LPCTSTR)strsend;

//MessageBox(NULL,p,"fdsa",0);
send(g_socket,p,strlen(p)+1,0);
}
请问怎么样才能解决.谢谢

------解决方案--------------------
BYTE buffer[] = { 0x23, 0x1A, 0x00, 0x00, 0x00, 0xCC, 0xC4, 0x14, 0x00, 0x0A, 0x40, 0xC5, 0x00, 0xD9, 0xE4, 0x22, 0x33, 0x1F, 0x98, 0x7C};

发送这个 buffer

send( SOCKET, buffer, sizeof(buffer), 0);
------解决方案--------------------
用一个循环
一个一个字节处理, atoi , 然后附加到BYTE数组后面