Facing new challenges everyday

Working with Mongo Wire Protocol on C#

August 2nd, 2009

Last saturday I started a small C# project when I try to send a message to MongoDB, after few hours working on it I finally could see the database receiving the message sucessfully.

Here’s the code that I used to send the message to database:

Program.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;

namespace Mongo.Console
{
    class Program
    {
        static void Main(string[] args)
        {
            //Creating a socket connection to mongodb instance
            Socket socket = new Socket(AddressFamily.InterNetwork,
                  SocketType.Stream, ProtocolType.Tcp);
            socket.Connect(Dns.GetHostAddresses("192.168.0.103"), 27017);

            //This is the message to be sent to mongodb instance
            List<byte> message = new List<byte>();
            message.AddRange(Encoding.UTF8.GetBytes("This is a test."));
            message.Add(0x00);

            //Each message to be sent to mongodb must have a header like
            //where we can specify which operation will be performed on server.
            List<byte> header = new List<byte>();
            header.AddRange(BitConverter.GetBytes(16 + message.Count));
            header.AddRange(BitConverter.GetBytes(1));
            header.AddRange(BitConverter.GetBytes(0));
            header.AddRange(BitConverter.GetBytes(1000));

            //Now we must put the message header a body together before send it
            // to the server.
            List<ArraySegment<byte>> buffer = new List<ArraySegment<byte>>();
            buffer.Add(new ArraySegment<byte>(header.ToArray()));
            buffer.Add(new ArraySegment<byte>(message.ToArray()));

            //Send the message to the server
            socket.Send(buffer);

            //Close connection
            socket.Close();
        }
    }

A very good documentation about how to write a MongoDB driver can be found here.

DZoneGoogle BookmarksFacebookEvernoteLinkedInDeliciousShare

No Comments »

No comments yet.

Leave a comment

:mrgreen: :neutral: :twisted: :shock: :smile: :???: :cool: :evil: :grin: :oops: :razz: :roll: :wink: :cry: :eek: :lol: :mad: :sad:
*

RSS feed for these comments. | TrackBack URI

Visitors Around the World

Polls

How Is My Site?

View Results

Loading ... Loading ...

Categories

Meta

Links

hosted by easy2use.net