读书人

socket与设备进行http通信发送的控制信

发布时间: 2011-12-29 22:09:38 作者: rapoo

socket与设备进行http通信发送的控制信息需要加http包头吗?
IPAddress[] ipa = Dns.GetHostAddresses( "192.168.1.126 ");
IPEndPoint ipe = new IPEndPoint(ipa[0], 80);
Socket ipc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
string tobesend = "ipcam console admin:123456\r\n ";//说明书上用此字符串连接设备,我使用以后不成功,receive了256个0.如果直接用video show resolution(此为控制台命令,返回设备视频的格式)则返回一串什么http method <video> 不成功的说明.我的问题是,与设备进行http通信,难道只是建立socket连接就可以直接发送字符串命令而不用加http包头了吗?意思就是string tobesend直接被赋成 "ipcam console ab:ab\r\n "而不加什么包头?
byte[] bytesend = Encoding.ASCII.GetBytes(tobesend);
Byte[] byteget = new Byte[256];

ipc.Connect(ipe);

if (ipc.Connected)
{
ipc.Send(bytesend, bytesend.Length, 0);

int num = 0;
string result = " ";
do
{
num = ipc.Receive(byteget, byteget.Length, 0);
result = result + Encoding.ASCII.GetString(byteget, 0, num);
} while (num > 0);
Console.WriteLine( "result is: " + result);
Console.ReadLine();



else
{
Console.Write( "not connect ");
Console.ReadLine();
}
照说明书上的说 建立TCP连接10秒内发送ipcam console username:password\r\n到设备应该返回的是ok,false等等的简单消息啊

[解决办法]
1、socket通讯不支持http协议。
2、socket通讯,不需要加包头。需要注意的是字符格式和数据类型。
[解决办法]
如果是连接web服务就需要加协议头部分啊,像method:post啊referer啊cookie啊什么的,所以,如果你想连接web服务,那么用httpwebrequest会方便很多

读书人网 >C#

热点推荐