<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DallinJones.com &#187; Networking</title>
	<atom:link href="http://www.dallinjones.com/category/programming/networking/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dallinjones.com</link>
	<description>One more geek in the world.</description>
	<lastBuildDate>Fri, 09 Apr 2010 17:02:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>C# Image Server Client (Using XML for the application protocol)</title>
		<link>http://www.dallinjones.com/2008/06/c-image-server-client-using-xml-for-the-application-protocol/</link>
		<comments>http://www.dallinjones.com/2008/06/c-image-server-client-using-xml-for-the-application-protocol/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 21:23:45 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/2008/06/05/c-image-server-client-using-xml-for-the-application-protocol/</guid>
		<description><![CDATA[Our assignment in class this week was to create a network based client that would connect to the teachers Image Server and make requests via XML for information such as getting a category list, getting and image list, and ultimately, getting the image itself. There were a few different things that needed to be handled [...]]]></description>
			<content:encoded><![CDATA[<p>Our assignment in class this week was to create a network based client that would connect to the teachers Image Server and make requests via XML for information such as getting a category list, getting and image list, and ultimately, getting the image itself. There were a few different things that needed to be handled to make this work properly. Granted, this isn&#8217;t the best code in the word, since the summer semester is so short, but it does work. For it to run properly, you have to be connected to the VPN at UVU.<span id="more-62"></span>Here is a link to the application protocol as defined in my class. <a href="http://love.uvsc.edu/cns3670/Assignments/Image%20Server%20Application%20Protocol.htm" title="Image Server Application protocol and XML specifications." target="_blank">Click here</a> to get the document.</p>
<p>Here is my code for the main program form:<br />
<code> </code></p>
<pre>
<font color="#a52a2a"> 1 </font><font color="#a52a2a"><strong>using</strong></font> System;<font color="#a52a2a"> 2 </font><font color="#a52a2a"><strong>using</strong></font> System.Collections.Generic;
<font color="#a52a2a"> 3 </font><font color="#a52a2a"><strong>using</strong></font> System.Collections;
<font color="#a52a2a"> 4 </font><font color="#a52a2a"><strong>using</strong></font> System.ComponentModel;
<font color="#a52a2a"> 5 </font><font color="#a52a2a"><strong>using</strong></font> System.Data;
<font color="#a52a2a"> 6 </font><font color="#a52a2a"><strong>using</strong></font> System.Drawing;
<font color="#a52a2a"> 7 </font><font color="#a52a2a"><strong>using</strong></font> System.Text;
<font color="#a52a2a"> 8 </font><font color="#a52a2a"><strong>using</strong></font> System.Windows.Forms;
<font color="#a52a2a"> 9 </font>
<font color="#a52a2a">10 </font><font color="#2e8b57"><strong>namespace</strong></font> ImageServer
<font color="#a52a2a">11 </font>{
<font color="#a52a2a">12 </font>    <font color="#2e8b57"><strong>public</strong></font> <font color="#a52a2a"><strong>partial</strong></font> <font color="#2e8b57"><strong>class</strong></font> FormMain : Form
<font color="#a52a2a">13 </font>    {
<font color="#a52a2a">14 </font>        ImageServerAPI isAPI;
<font color="#a52a2a">16 </font>        <font color="#2e8b57"><strong>public</strong></font> <font color="#2e8b57"><strong>delegate</strong></font> <font color="#2e8b57"><strong>void</strong></font> dStatusUpdate(<font color="#2e8b57"><strong>string</strong></font> message);
<font color="#a52a2a">16 </font>        <font color="#2e8b57"><strong>public</strong></font> dStatusUpdate statusUpdate;
<font color="#a52a2a">17 </font>        ArrayList cats;
<font color="#a52a2a">18 </font>        ArrayList imgs;
<font color="#a52a2a">19 </font>
<font color="#a52a2a">20 </font>        <font color="#2e8b57"><strong>public</strong></font> FormMain()
<font color="#a52a2a">21 </font>        {
<font color="#a52a2a">22 </font>            InitializeComponent();
<font color="#a52a2a">23 </font>        }
<font color="#a52a2a">24 </font>
<font color="#a52a2a">25 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> FormMain_Load(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)
<font color="#a52a2a">26 </font>        {
<font color="#a52a2a">27 </font>            comboServerIP.SelectedIndex = <font color="#ff00ff">0</font>;
<font color="#a52a2a">28 </font>            listImages.Items.Clear();
<font color="#a52a2a">29 </font>            comboServerIP.Focus();
<font color="#a52a2a">30 </font>            labelStatus.Text = <font color="#ff00ff">"Started, awaiting orders..."</font>;
<font color="#a52a2a">31 </font>            statusUpdate = <font color="#a52a2a"><strong>new</strong></font> dStatusUpdate(displayMessage);
<font color="#a52a2a">32 </font>            isAPI = <font color="#a52a2a"><strong>new</strong></font> ImageServerAPI(<font color="#a52a2a"><strong>this</strong></font>);
<font color="#a52a2a">33 </font>        }
<font color="#a52a2a">34 </font>
<font color="#a52a2a">35 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> buttonGetCategory_Click(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)
<font color="#a52a2a">36 </font>        {
<font color="#a52a2a">37 </font>            comboCategory.Items.Clear();
<font color="#a52a2a">38 </font>            cats = isAPI.getCategoriesList(comboServerIP.Text);
<font color="#a52a2a">39 </font>            <font color="#a52a2a"><strong>for</strong></font> (<font color="#2e8b57"><strong>int</strong></font> i = <font color="#ff00ff">0</font>; i &lt; cats.Count; i++)
<font color="#a52a2a">40 </font>            {
<font color="#a52a2a">41 </font>                comboCategory.Items.Add(<font color="#ff00ff">"("</font> + ((Category)(cats[i])).cId + <font color="#ff00ff">") "</font> + ((Category)(cats[i])).cName);
<font color="#a52a2a">42 </font>            }
<font color="#a52a2a">43 </font>        }
<font color="#a52a2a">44 </font>
<font color="#a52a2a">45 </font>        <font color="#2e8b57"><strong>public</strong></font> <font color="#2e8b57"><strong>void</strong></font> displayMessage(<font color="#2e8b57"><strong>string</strong></font> message)
<font color="#a52a2a">46 </font>        {
<font color="#a52a2a">47 </font>            labelStatus.Text = message;
<font color="#a52a2a">48 </font>            labelStatus.Refresh();
<font color="#a52a2a">49 </font>        }
<font color="#a52a2a">50 </font>
<font color="#a52a2a">51 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> buttonGetImage_Click(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)
<font color="#a52a2a">52 </font>        {
<font color="#a52a2a">53 </font>            listImages.Items.Clear();
<font color="#a52a2a">54 </font>            imgs = isAPI.getImagesList(comboServerIP.Text, ((Category)cats[comboCategory.SelectedIndex]).cId);
<font color="#a52a2a">55 </font>            <font color="#a52a2a"><strong>for</strong></font> (<font color="#2e8b57"><strong>int</strong></font> i = <font color="#ff00ff">0</font>; i &lt; imgs.Count; i++)
<font color="#a52a2a">56 </font>            {
<font color="#a52a2a">57 </font>                listImages.Items.Add(<font color="#ff00ff">"("</font> + ((Img)(imgs[i])).cId + <font color="#ff00ff">") "</font> + ((Img)(imgs[i])).cName);
<font color="#a52a2a">58 </font>            }
<font color="#a52a2a">59 </font>            listImages.Refresh();
<font color="#a52a2a">60 </font>        }
<font color="#a52a2a">61 </font>
<font color="#a52a2a">62 </font>        <font color="#2e8b57"><strong>public</strong></font> String getServer()
<font color="#a52a2a">63 </font>        {
<font color="#a52a2a">64 </font>            <font color="#a52a2a"><strong>return</strong></font> comboServerIP.Text;
<font color="#a52a2a">65 </font>        }
<font color="#a52a2a">66 </font>
<font color="#a52a2a">67 </font>        <font color="#2e8b57"><strong>public</strong></font> <font color="#2e8b57"><strong>void</strong></font> addResponse(String str)
<font color="#a52a2a">68 </font>        {
<font color="#a52a2a">69 </font>            textXML.Text += str;
<font color="#a52a2a">70 </font>            textXML.Refresh();
<font color="#a52a2a">71 </font>        }
<font color="#a52a2a">72 </font>
<font color="#a52a2a">73 </font>        <font color="#2e8b57"><strong>public</strong></font> <font color="#2e8b57"><strong>void</strong></font> setResponse(String str)
<font color="#a52a2a">74 </font>        {
<font color="#a52a2a">75 </font>            textXML.Text = str;
<font color="#a52a2a">76 </font>            textXML.Refresh();
<font color="#a52a2a">77 </font>        }
<font color="#a52a2a">78 </font>
<font color="#a52a2a">79 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> listImages_MouseDoubleClick(<font color="#2e8b57"><strong>object</strong></font> sender, MouseEventArgs e)
<font color="#a52a2a">80 </font>        {
<font color="#a52a2a">81 </font>            <font color="#2e8b57"><strong>int</strong></font> id = listImages.SelectedIndices[<font color="#ff00ff">0</font>];
<font color="#a52a2a">82 </font>            Bitmap img = isAPI.getImage(comboServerIP.Text, ((Img)imgs[id]).cId);
<font color="#a52a2a">83 </font>            <font color="#0000ff">//Bitmap img = new Bitmap("G:SchoolCN3670labsImageServerImageClient1.bmp");</font>
<font color="#a52a2a">84 </font>            FormImage frmImage = <font color="#a52a2a"><strong>new</strong></font> FormImage(img, ((Img)imgs[id]).cName);
<font color="#a52a2a">85 </font>            frmImage.Show();
<font color="#a52a2a">86 </font>        }
<font color="#a52a2a">87 </font>    }
<font color="#a52a2a">88 </font>}</pre>
<p>My code for the image form is as follows:</p>
<p><code> </code></p>
<pre>
<font color="#a52a2a"> 1 </font><font color="#a52a2a"><strong>using</strong></font> System;<font color="#a52a2a"> 2 </font><font color="#a52a2a"><strong>using</strong></font> System.Collections.Generic;
<font color="#a52a2a"> 3 </font><font color="#a52a2a"><strong>using</strong></font> System.ComponentModel;
<font color="#a52a2a"> 4 </font><font color="#a52a2a"><strong>using</strong></font> System.Data;
<font color="#a52a2a"> 5 </font><font color="#a52a2a"><strong>using</strong></font> System.Drawing;
<font color="#a52a2a"> 6 </font><font color="#a52a2a"><strong>using</strong></font> System.Text;
<font color="#a52a2a"> 7 </font><font color="#a52a2a"><strong>using</strong></font> System.Windows.Forms;
<font color="#a52a2a"> 8 </font>
<font color="#a52a2a"> 9 </font><font color="#2e8b57"><strong>namespace</strong></font> ImageServer
<font color="#a52a2a">10 </font>{
<font color="#a52a2a">11 </font>    <font color="#2e8b57"><strong>public</strong></font> <font color="#a52a2a"><strong>partial</strong></font> <font color="#2e8b57"><strong>class</strong></font> FormImage : Form
<font color="#a52a2a">12 </font>    {
<font color="#a52a2a">13 </font>        Bitmap img;
<font color="#a52a2a">14 </font>
<font color="#a52a2a">15 </font>        <font color="#2e8b57"><strong>public</strong></font> FormImage(Bitmap img, String name)
<font color="#a52a2a">16 </font>        {
<font color="#a52a2a">17 </font>            InitializeComponent();
<font color="#a52a2a">18 </font>            <font color="#a52a2a"><strong>this</strong></font>.image.Image = img;
<font color="#a52a2a">19 </font>            <font color="#a52a2a"><strong>this</strong></font>.Text = name;
<font color="#a52a2a">20 </font>        }
<font color="#a52a2a">21 </font>
<font color="#a52a2a">22 </font>        <font color="#2e8b57"><strong>public</strong></font> FormImage()
<font color="#a52a2a">23 </font>        {
<font color="#a52a2a">24 </font>            InitializeComponent();
<font color="#a52a2a">25 </font>        }
<font color="#a52a2a">26 </font>
<font color="#a52a2a">27 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> FormImage_Load(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)
<font color="#a52a2a">28 </font>        {
<font color="#a52a2a">29 </font>            <font color="#a52a2a"><strong>this</strong></font>.image.Refresh();
<font color="#a52a2a">30 </font>        }
<font color="#a52a2a">31 </font>    }
<font color="#a52a2a">32 </font>}</pre>
<p>For the XML handling and sending:<br />
<code> </code></p>
<pre>
<font color="#a52a2a">  1 </font><font color="#a52a2a"><strong>using</strong></font> System;
<font color="#a52a2a">  2 </font><font color="#a52a2a"><strong>using</strong></font> System.Collections.Generic;
<font color="#a52a2a">  3 </font><font color="#a52a2a"><strong>using</strong></font> System.Collections;
<font color="#a52a2a">  4 </font><font color="#a52a2a"><strong>using</strong></font> System.Text;
<font color="#a52a2a">  5 </font><font color="#a52a2a"><strong>using</strong></font> System.Net;
<font color="#a52a2a">  6 </font><font color="#a52a2a"><strong>using</strong></font> System.Net.Sockets;
<font color="#a52a2a">  7 </font><font color="#a52a2a"><strong>using</strong></font> System.Xml;
<font color="#a52a2a">  8 </font><font color="#a52a2a"><strong>using</strong></font> System.Drawing;
<font color="#a52a2a">  9 </font><font color="#a52a2a"><strong>using</strong></font> System.IO;
<font color="#a52a2a"> 10 </font>
<font color="#a52a2a"> 11 </font><font color="#2e8b57"><strong>namespace</strong></font> ImageServer
<font color="#a52a2a"> 12 </font>{
<font color="#a52a2a"> 13 </font>    <font color="#2e8b57"><strong>class</strong></font> ImageServerAPI
<font color="#a52a2a"> 14 </font>    {
<font color="#a52a2a"> 15 </font>        FormMain form;
<font color="#a52a2a"> 16 </font>        <font color="#2e8b57"><strong>private</strong></font> Socket currentSocket;
<font color="#a52a2a"> 17 </font>        <font color="#2e8b57"><strong>private</strong></font> IPAddress currentAddress;
<font color="#a52a2a"> 18 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>static</strong></font> <font color="#2e8b57"><strong>int</strong></font> PORT = <font color="#ff00ff">10000</font>;
<font color="#a52a2a"> 19 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>int</strong></font> state;
<font color="#a52a2a"> 20 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>static</strong></font> <font color="#2e8b57"><strong>int</strong></font> StateNewCategory = <font color="#ff00ff">1</font>;
<font color="#a52a2a"> 21 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>static</strong></font> <font color="#2e8b57"><strong>int</strong></font> StateCategoryListRequest = <font color="#ff00ff">2</font>;
<font color="#a52a2a"> 22 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>static</strong></font> <font color="#2e8b57"><strong>int</strong></font> StateCategoryListComplete = <font color="#ff00ff">3</font>;
<font color="#a52a2a"> 23 </font>
<font color="#a52a2a"> 24 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>static</strong></font> <font color="#2e8b57"><strong>int</strong></font> StateImageSession = <font color="#ff00ff">4</font>;
<font color="#a52a2a"> 25 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>static</strong></font> <font color="#2e8b57"><strong>int</strong></font> StateImageListRequest = <font color="#ff00ff">5</font>;
<font color="#a52a2a"> 26 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>static</strong></font> <font color="#2e8b57"><strong>int</strong></font> StateImageListComplete = <font color="#ff00ff">6</font>;
<font color="#a52a2a"> 27 </font>
<font color="#a52a2a"> 28 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>static</strong></font> <font color="#2e8b57"><strong>int</strong></font> StateGetSession = <font color="#ff00ff">7</font>;
<font color="#a52a2a"> 29 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>static</strong></font> <font color="#2e8b57"><strong>int</strong></font> StateGetImage = <font color="#ff00ff">8</font>;
<font color="#a52a2a"> 30 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>static</strong></font> <font color="#2e8b57"><strong>int</strong></font> StateGetComplete = <font color="#ff00ff">9</font>;
<font color="#a52a2a"> 31 </font>
<font color="#a52a2a"> 32 </font>        <font color="#2e8b57"><strong>public</strong></font> ImageServerAPI(FormMain frm)
<font color="#a52a2a"> 33 </font>        {
<font color="#a52a2a"> 34 </font>            form = frm;
<font color="#a52a2a"> 35 </font>            state = StateNewCategory;
<font color="#a52a2a"> 36 </font>        }
<font color="#a52a2a"> 37 </font>
<font color="#a52a2a"> 38 </font>        <font color="#2e8b57"><strong>public</strong></font> <font color="#2e8b57"><strong>int</strong></font> sendString(<font color="#2e8b57"><strong>string</strong></font> send) {
<font color="#a52a2a"> 39 </font>            <font color="#2e8b57"><strong>int</strong></font> counter = <font color="#ff00ff">0</font>;
<font color="#a52a2a"> 40 </font>
<font color="#a52a2a"> 41 </font>            Byte[] sendBytes = Encoding.ASCII.GetBytes(send);
<font color="#a52a2a"> 42 </font>            Byte[] nullByte = <font color="#a52a2a"><strong>new</strong></font> Byte[] { <font color="#ff00ff">0</font> };
<font color="#a52a2a"> 43 </font>            <font color="#2e8b57"><strong>int</strong></font> length = sendBytes.Length;
<font color="#a52a2a"> 44 </font>            <font color="#2e8b57"><strong>int</strong></font> sendLength = send.Length;
<font color="#a52a2a"> 45 </font>            <font color="#2e8b57"><strong>int</strong></font> sendIndex = <font color="#ff00ff">0</font>;
<font color="#a52a2a"> 46 </font>            <font color="#a52a2a"><strong>try</strong></font>
<font color="#a52a2a"> 47 </font>            {
<font color="#a52a2a"> 48 </font>                <font color="#a52a2a"><strong>if</strong></font> (currentSocket == <font color="#ff00ff">null</font> || !currentSocket.Connected)
<font color="#a52a2a"> 49 </font>                {
<font color="#a52a2a"> 50 </font>                    <font color="#a52a2a"><strong>return</strong></font> -<font color="#ff00ff">1</font>;
<font color="#a52a2a"> 51 </font>                }
<font color="#a52a2a"> 52 </font>                <font color="#a52a2a"><strong>while</strong></font> (sendIndex &lt; sendLength)
<font color="#a52a2a"> 53 </font>                {
<font color="#a52a2a"> 54 </font>                    counter = currentSocket.Send(sendBytes, sendIndex, length, <font color="#ff00ff">0</font>);
<font color="#a52a2a"> 55 </font>                    sendIndex += counter;
<font color="#a52a2a"> 56 </font>                }
<font color="#a52a2a"> 57 </font>
<font color="#a52a2a"> 58 </font>                counter = currentSocket.Send(nullByte, <font color="#ff00ff">1</font>, <font color="#ff00ff">0</font>);
<font color="#a52a2a"> 59 </font>            }
<font color="#a52a2a"> 60 </font>            <font color="#a52a2a"><strong>catch</strong></font> (SocketException se)
<font color="#a52a2a"> 61 </font>            {
<font color="#a52a2a"> 62 </font>                <font color="#a52a2a"><strong>return</strong></font> -<font color="#ff00ff">1</font>;
<font color="#a52a2a"> 63 </font>            }
<font color="#a52a2a"> 64 </font>            <font color="#a52a2a"><strong>return</strong></font> sendIndex;
<font color="#a52a2a"> 65 </font>        }
<font color="#a52a2a"> 66 </font>
<font color="#a52a2a"> 67 </font>        <font color="#2e8b57"><strong>public</strong></font> String getResponse()
<font color="#a52a2a"> 68 </font>        {
<font color="#a52a2a"> 69 </font>            String recieve = <font color="#ff00ff">""</font>;
<font color="#a52a2a"> 70 </font>            <font color="#a52a2a"><strong>try</strong></font>
<font color="#a52a2a"> 71 </font>            {
<font color="#a52a2a"> 72 </font>                <font color="#2e8b57"><strong>byte</strong></font>[] buffer = <font color="#a52a2a"><strong>new</strong></font> <font color="#2e8b57"><strong>byte</strong></font>[<font color="#ff00ff">1</font>];
<font color="#a52a2a"> 73 </font>                <font color="#2e8b57"><strong>int</strong></font> count = <font color="#ff00ff">0</font>;
<font color="#a52a2a"> 74 </font>                <font color="#a52a2a"><strong>do</strong></font>
<font color="#a52a2a"> 75 </font>                {
<font color="#a52a2a"> 76 </font>                    count += currentSocket.Receive(buffer, <font color="#ff00ff">1</font>, SocketFlags.None);
<font color="#a52a2a"> 77 </font>                    recieve += Encoding.ASCII.GetString(buffer);
<font color="#a52a2a"> 78 </font>                } <font color="#a52a2a"><strong>while</strong></font> (buffer[<font color="#ff00ff">0</font>] != <font color="#ff00ff">0</font>);
<font color="#a52a2a"> 79 </font>                <font color="#0000ff">//Fixing this</font>
<font color="#a52a2a"> 80 </font>
<font color="#a52a2a"> 81 </font>            }
<font color="#a52a2a"> 82 </font>            <font color="#a52a2a"><strong>catch</strong></font> (SocketException se)
<font color="#a52a2a"> 83 </font>            {
<font color="#a52a2a"> 84 </font>                <font color="#a52a2a"><strong>return</strong></font> <font color="#ff00ff">""</font>;
<font color="#a52a2a"> 85 </font>            }
<font color="#a52a2a"> 86 </font>            <font color="#a52a2a"><strong>return</strong></font> recieve;
<font color="#a52a2a"> 87 </font>        }
<font color="#a52a2a"> 88 </font>
<font color="#a52a2a"> 89 </font>        <font color="#2e8b57"><strong>public</strong></font> ArrayList getCategoriesList(String server) {
<font color="#a52a2a"> 90 </font>            ArrayList lst = <font color="#a52a2a"><strong>new</strong></font> ArrayList();
<font color="#a52a2a"> 91 </font>            form.displayMessage(<font color="#ff00ff">"Fetching Categories List"</font>);
<font color="#a52a2a"> 92 </font>            currentSocket = <font color="#a52a2a"><strong>new</strong></font> Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
<font color="#a52a2a"> 93 </font>            IPHostEntry IPHost = Dns.GetHostEntry(server);
<font color="#a52a2a"> 94 </font>            IPEndPoint ipServer = <font color="#a52a2a"><strong>new</strong></font> IPEndPoint(IPHost.AddressList[<font color="#ff00ff">0</font>].Address, PORT);
<font color="#a52a2a"> 95 </font>            currentSocket.Connect(ipServer);
<font color="#a52a2a"> 96 </font>
<font color="#a52a2a"> 97 </font>            String sendString = <font color="#ff00ff">"&lt;ReqSession&gt;dallin&lt;/ReqSession&gt;"</font>;
<font color="#a52a2a"> 98 </font>            <font color="#a52a2a"><strong>this</strong></font>.sendString(sendString);
<font color="#a52a2a"> 99 </font>            String res = <font color="#a52a2a"><strong>this</strong></font>.getResponse();
<font color="#a52a2a">100 </font>            form.setResponse(res);
<font color="#a52a2a">101 </font>            sendString = <font color="#ff00ff">"&lt;CategoryListRequest /&gt;"</font>;
<font color="#a52a2a">102 </font>            <font color="#a52a2a"><strong>this</strong></font>.sendString(sendString);
<font color="#a52a2a">103 </font>            res = <font color="#a52a2a"><strong>this</strong></font>.getResponse();
<font color="#a52a2a">104 </font>            form.setResponse(res);
<font color="#a52a2a">105 </font>            <font color="#0000ff">//</font><span style="background-color: #ffff00"><font color="#0000ff">TODO</font></span><font color="#0000ff">: parse XML</font>
<font color="#a52a2a">106 </font>            XmlDocument xml = <font color="#a52a2a"><strong>new</strong></font> XmlDocument();
<font color="#a52a2a">107 </font>            xml.LoadXml(res);
<font color="#a52a2a">108 </font>
<font color="#a52a2a">109 </font>            lst.AddRange(<font color="#a52a2a"><strong>this</strong></font>.DomtoCategory(xml.DocumentElement, <font color="#ff00ff">0</font>));
<font color="#a52a2a">110 </font>
<font color="#a52a2a">111 </font>            sendString = <font color="#ff00ff">"&lt;Complete /&gt;"</font>;
<font color="#a52a2a">112 </font>            <font color="#a52a2a"><strong>this</strong></font>.sendString(sendString);
<font color="#a52a2a">113 </font>            res = <font color="#a52a2a"><strong>this</strong></font>.getResponse();
<font color="#a52a2a">114 </font>            currentSocket.Disconnect(<font color="#ff00ff">false</font>);
<font color="#a52a2a">115 </font>            currentSocket.Close();
<font color="#a52a2a">116 </font>
<font color="#a52a2a">117 </font>            form.displayMessage(<font color="#ff00ff">"Categories List recieved"</font>);
<font color="#a52a2a">118 </font>            <font color="#a52a2a"><strong>return</strong></font> lst;
<font color="#a52a2a">119 </font>        }
<font color="#a52a2a">120 </font>
<font color="#a52a2a">121 </font>        <font color="#2e8b57"><strong>private</strong></font> ArrayList DomtoImage(XmlNode parentNode, <font color="#2e8b57"><strong>int</strong></font> level)
<font color="#a52a2a">122 </font>        {
<font color="#a52a2a">123 </font>            ArrayList list = <font color="#a52a2a"><strong>new</strong></font> ArrayList();
<font color="#a52a2a">124 </font>
<font color="#a52a2a">125 </font>            <font color="#a52a2a"><strong>foreach</strong></font> (XmlNode domChild <font color="#a52a2a"><strong>in</strong></font> parentNode.ChildNodes)
<font color="#a52a2a">126 </font>            {
<font color="#a52a2a">127 </font>                String name = <font color="#ff00ff">""</font>;
<font color="#a52a2a">128 </font>                String id = <font color="#ff00ff">""</font>;
<font color="#a52a2a">129 </font>                String description = <font color="#ff00ff">""</font>;
<font color="#a52a2a">130 </font>                <font color="#a52a2a"><strong>foreach</strong></font> (XmlAttribute domAtt <font color="#a52a2a"><strong>in</strong></font> domChild.Attributes)
<font color="#a52a2a">131 </font>                {
<font color="#a52a2a">132 </font>                    <font color="#a52a2a"><strong>if</strong></font> (domAtt.Name == <font color="#ff00ff">"name"</font>)
<font color="#a52a2a">133 </font>                    {
<font color="#a52a2a">134 </font>                        name = domAtt.Value;
<font color="#a52a2a">135 </font>                    }
<font color="#a52a2a">136 </font>                    <font color="#a52a2a"><strong>if</strong></font> (domAtt.Name == <font color="#ff00ff">"index"</font>)
<font color="#a52a2a">137 </font>                    {
<font color="#a52a2a">138 </font>                        id = domAtt.Value;
<font color="#a52a2a">139 </font>                    }
<font color="#a52a2a">140 </font>                }
<font color="#a52a2a">141 </font>                list.Add(<font color="#a52a2a"><strong>new</strong></font> Img(Int16.Parse(id), name, description));
<font color="#a52a2a">142 </font>                <font color="#a52a2a"><strong>if</strong></font> (domChild.HasChildNodes)
<font color="#a52a2a">143 </font>                {
<font color="#a52a2a">144 </font>                    list.AddRange(DomtoCategory(domChild, level + <font color="#ff00ff">1</font>));
<font color="#a52a2a">145 </font>                }
<font color="#a52a2a">146 </font>            }
<font color="#a52a2a">147 </font>            <font color="#a52a2a"><strong>return</strong></font> list;
<font color="#a52a2a">148 </font>        }
<font color="#a52a2a">149 </font>
<font color="#a52a2a">150 </font>
<font color="#a52a2a">151 </font>        <font color="#0000ff">// Recursively called routine that displays nodes in list box</font>
<font color="#a52a2a">152 </font>        <font color="#2e8b57"><strong>private</strong></font> ArrayList DomtoCategory(XmlNode parentNode, <font color="#2e8b57"><strong>int</strong></font> level)
<font color="#a52a2a">153 </font>        {
<font color="#a52a2a">154 </font>            ArrayList list = <font color="#a52a2a"><strong>new</strong></font> ArrayList();
<font color="#a52a2a">155 </font>
<font color="#a52a2a">156 </font>            <font color="#a52a2a"><strong>foreach</strong></font> (XmlNode domChild <font color="#a52a2a"><strong>in</strong></font> parentNode.ChildNodes)
<font color="#a52a2a">157 </font>            {
<font color="#a52a2a">158 </font>                String name = <font color="#ff00ff">""</font>;
<font color="#a52a2a">159 </font>                String id = <font color="#ff00ff">""</font>;
<font color="#a52a2a">160 </font>                <font color="#a52a2a"><strong>foreach</strong></font> (XmlAttribute domAtt <font color="#a52a2a"><strong>in</strong></font> domChild.Attributes)
<font color="#a52a2a">161 </font>                {
<font color="#a52a2a">162 </font>                    <font color="#a52a2a"><strong>if</strong></font> (domAtt.Name == <font color="#ff00ff">"name"</font>)
<font color="#a52a2a">163 </font>                    {
<font color="#a52a2a">164 </font>                        name = domAtt.Value;
<font color="#a52a2a">165 </font>                    }
<font color="#a52a2a">166 </font>                    <font color="#a52a2a"><strong>if</strong></font> (domAtt.Name == <font color="#ff00ff">"index"</font>)
<font color="#a52a2a">167 </font>                    {
<font color="#a52a2a">168 </font>                        id = domAtt.Value;
<font color="#a52a2a">169 </font>                    }
<font color="#a52a2a">170 </font>                }
<font color="#a52a2a">171 </font>                list.Add(<font color="#a52a2a"><strong>new</strong></font> Category(Int16.Parse(id), name));
<font color="#a52a2a">172 </font>                <font color="#a52a2a"><strong>if</strong></font> (domChild.HasChildNodes)
<font color="#a52a2a">173 </font>                {
<font color="#a52a2a">174 </font>                    list.AddRange(DomtoCategory(domChild, level + <font color="#ff00ff">1</font>));
<font color="#a52a2a">175 </font>                }
<font color="#a52a2a">176 </font>            }
<font color="#a52a2a">177 </font>            <font color="#a52a2a"><strong>return</strong></font> list;
<font color="#a52a2a">178 </font>        }
<font color="#a52a2a">179 </font>
<font color="#a52a2a">180 </font>        <font color="#2e8b57"><strong>public</strong></font> ArrayList getImagesList(String server, <font color="#2e8b57"><strong>int</strong></font> id)
<font color="#a52a2a">181 </font>        {
<font color="#a52a2a">182 </font>            ArrayList lst = <font color="#a52a2a"><strong>new</strong></font> ArrayList();
<font color="#a52a2a">183 </font>            form.displayMessage(<font color="#ff00ff">"Fetching Images List"</font>);
<font color="#a52a2a">184 </font>            currentSocket = <font color="#a52a2a"><strong>new</strong></font> Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
<font color="#a52a2a">185 </font>            IPHostEntry IPHost = Dns.GetHostEntry(server);
<font color="#a52a2a">186 </font>            IPEndPoint ipServer = <font color="#a52a2a"><strong>new</strong></font> IPEndPoint(IPHost.AddressList[<font color="#ff00ff">0</font>].Address, PORT);
<font color="#a52a2a">187 </font>            currentSocket.Connect(ipServer);
<font color="#a52a2a">188 </font>
<font color="#a52a2a">189 </font>            String sendString = <font color="#ff00ff">"&lt;ReqSession&gt;dallin&lt;/ReqSession&gt;"</font>;
<font color="#a52a2a">190 </font>            <font color="#a52a2a"><strong>this</strong></font>.sendString(sendString);
<font color="#a52a2a">191 </font>            String res = <font color="#a52a2a"><strong>this</strong></font>.getResponse();
<font color="#a52a2a">192 </font>            form.setResponse(res);
<font color="#a52a2a">193 </font>            sendString = <font color="#ff00ff">"&lt;ImageListRequest category=</font><font color="#6a5acd">"</font><font color="#ff00ff">"</font> + id + <font color="#ff00ff">"</font><font color="#6a5acd">"</font><font color="#ff00ff">/&gt;"</font>;
<font color="#a52a2a">194 </font>            <font color="#a52a2a"><strong>this</strong></font>.sendString(sendString);
<font color="#a52a2a">195 </font>            res = <font color="#a52a2a"><strong>this</strong></font>.getResponse();
<font color="#a52a2a">196 </font>            form.setResponse(res);
<font color="#a52a2a">197 </font>            XmlDocument xml = <font color="#a52a2a"><strong>new</strong></font> XmlDocument();
<font color="#a52a2a">198 </font>            xml.LoadXml(res);
<font color="#a52a2a">199 </font>
<font color="#a52a2a">200 </font>            lst.AddRange(<font color="#a52a2a"><strong>this</strong></font>.DomtoImage(xml.DocumentElement, <font color="#ff00ff">0</font>));
<font color="#a52a2a">201 </font>
<font color="#a52a2a">202 </font>            sendString = <font color="#ff00ff">"&lt;Complete /&gt;"</font>;
<font color="#a52a2a">203 </font>            <font color="#a52a2a"><strong>this</strong></font>.sendString(sendString);
<font color="#a52a2a">204 </font>            res = <font color="#a52a2a"><strong>this</strong></font>.getResponse();
<font color="#a52a2a">205 </font>            currentSocket.Disconnect(<font color="#ff00ff">false</font>);
<font color="#a52a2a">206 </font>            currentSocket.Close();
<font color="#a52a2a">207 </font>            form.displayMessage(<font color="#ff00ff">"Images List recieved"</font>);
<font color="#a52a2a">208 </font>            <font color="#a52a2a"><strong>return</strong></font> lst;
<font color="#a52a2a">209 </font>        }
<font color="#a52a2a">210 </font>
<font color="#a52a2a">211 </font>        <font color="#2e8b57"><strong>private</strong></font> Bitmap FieldToImage(Byte[] imageBytes)
<font color="#a52a2a">212 </font>        {
<font color="#a52a2a">213 </font>            Bitmap img;
<font color="#a52a2a">214 </font>            MemoryStream ms;
<font color="#a52a2a">215 </font>            ms = <font color="#a52a2a"><strong>new</strong></font> MemoryStream(imageBytes);
<font color="#a52a2a">216 </font>            img = <font color="#a52a2a"><strong>new</strong></font> Bitmap(ms);
<font color="#a52a2a">217 </font>            ms.Close();
<font color="#a52a2a">218 </font>            <font color="#a52a2a"><strong>return</strong></font> img;
<font color="#a52a2a">219 </font>        }
<font color="#a52a2a">220 </font>
<font color="#a52a2a">221 </font>        <font color="#2e8b57"><strong>private</strong></font> Bitmap fetch(<font color="#2e8b57"><strong>int</strong></font> length)
<font color="#a52a2a">222 </font>        {
<font color="#a52a2a">223 </font>            <font color="#2e8b57"><strong>byte</strong></font>[] buffer = <font color="#a52a2a"><strong>new</strong></font> <font color="#2e8b57"><strong>byte</strong></font>[length];
<font color="#a52a2a">224 </font>            <font color="#a52a2a"><strong>try</strong></font>
<font color="#a52a2a">225 </font>            {
<font color="#a52a2a">226 </font>                <font color="#2e8b57"><strong>int</strong></font> count = <font color="#ff00ff">0</font>;
<font color="#a52a2a">227 </font>                <font color="#a52a2a"><strong>while</strong></font> (count &lt; length)
<font color="#a52a2a">228 </font>                {
<font color="#a52a2a">229 </font>                    count += currentSocket.Receive(buffer, count, (length - count), SocketFlags.None);
<font color="#a52a2a">230 </font>                }
<font color="#a52a2a">231 </font>            }
<font color="#a52a2a">232 </font>            <font color="#a52a2a"><strong>catch</strong></font> (SocketException se)
<font color="#a52a2a">233 </font>            {
<font color="#a52a2a">234 </font>                <font color="#a52a2a"><strong>return</strong></font> <font color="#a52a2a"><strong>new</strong></font> Bitmap(<font color="#ff00ff">"G:</font><font color="#ff00ff">School</font><font color="#ff00ff">CN3670</font><font color="#ff00ff">labs</font><font color="#ff00ff">ImageServer</font><font color="#ff00ff">ImageClient1.bmp"</font>);
<font color="#a52a2a">235 </font>            }
<font color="#a52a2a">236 </font>            <font color="#a52a2a"><strong>return</strong></font> FieldToImage(buffer);
<font color="#a52a2a">237 </font>        }
<font color="#a52a2a">238 </font>        <font color="#0000ff">//This is to be added for part two.</font>
<font color="#a52a2a">239 </font>        <font color="#2e8b57"><strong>public</strong></font> Bitmap getImage(String server, <font color="#2e8b57"><strong>int</strong></font> id)
<font color="#a52a2a">240 </font>        {
<font color="#a52a2a">241 </font>            Bitmap img;
<font color="#a52a2a">242 </font>            ArrayList lst = <font color="#a52a2a"><strong>new</strong></font> ArrayList();
<font color="#a52a2a">243 </font>            form.displayMessage(<font color="#ff00ff">"Fetching Image ::"</font> + id);
<font color="#a52a2a">244 </font>            currentSocket = <font color="#a52a2a"><strong>new</strong></font> Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
<font color="#a52a2a">245 </font>            IPHostEntry IPHost = Dns.GetHostEntry(server);
<font color="#a52a2a">246 </font>            IPEndPoint ipServer = <font color="#a52a2a"><strong>new</strong></font> IPEndPoint(IPHost.AddressList[<font color="#ff00ff">0</font>].Address, PORT);
<font color="#a52a2a">247 </font>            currentSocket.Connect(ipServer);
<font color="#a52a2a">248 </font>
<font color="#a52a2a">249 </font>            String sendString = <font color="#ff00ff">"&lt;ReqSession&gt;dallin&lt;/ReqSession&gt;"</font>;
<font color="#a52a2a">250 </font>            <font color="#a52a2a"><strong>this</strong></font>.sendString(sendString);
<font color="#a52a2a">251 </font>            String res = <font color="#a52a2a"><strong>this</strong></font>.getResponse();
<font color="#a52a2a">252 </font>            form.setResponse(res);
<font color="#a52a2a">253 </font>            sendString = <font color="#ff00ff">"&lt;GetImage index=</font><font color="#6a5acd">"</font><font color="#ff00ff">"</font> + id + <font color="#ff00ff">"</font><font color="#6a5acd">"</font><font color="#ff00ff">/&gt;"</font>;
<font color="#a52a2a">254 </font>            <font color="#a52a2a"><strong>this</strong></font>.sendString(sendString);
<font color="#a52a2a">255 </font>            res = <font color="#a52a2a"><strong>this</strong></font>.getResponse();
<font color="#a52a2a">256 </font>            form.setResponse(res);
<font color="#a52a2a">257 </font>            XmlDocument xml = <font color="#a52a2a"><strong>new</strong></font> XmlDocument();
<font color="#a52a2a">258 </font>            xml.LoadXml(res);
<font color="#a52a2a">259 </font>            <font color="#2e8b57"><strong>int</strong></font> length = Int32.Parse(xml.DocumentElement.Attributes[<font color="#ff00ff">"length"</font>].Value);
<font color="#a52a2a">260 </font>
<font color="#a52a2a">261 </font>            img = fetch(length);
<font color="#a52a2a">262 </font>
<font color="#a52a2a">263 </font>            sendString = <font color="#ff00ff">"&lt;Complete /&gt;"</font>;
<font color="#a52a2a">264 </font>            <font color="#a52a2a"><strong>this</strong></font>.sendString(sendString);
<font color="#a52a2a">265 </font>            res = <font color="#a52a2a"><strong>this</strong></font>.getResponse();
<font color="#a52a2a">266 </font>            currentSocket.Disconnect(<font color="#ff00ff">false</font>);
<font color="#a52a2a">267 </font>            currentSocket.Close();
<font color="#a52a2a">268 </font>            form.displayMessage(<font color="#ff00ff">"Image ::"</font> + id + <font color="#ff00ff">" recieved ("</font>+length+<font color="#ff00ff">" byte(s) long)"</font>);
<font color="#a52a2a">269 </font>            <font color="#a52a2a"><strong>return</strong></font> img;
<font color="#a52a2a">270 </font>        }
<font color="#a52a2a">271 </font>    }
<font color="#a52a2a">272 </font>}</pre>
<p>And the classes that handle the information from the database (used for list objects) Img.cs:<br />
<code> </code></p>
<pre>
<font color="#a52a2a"> 1 </font><font color="#a52a2a"><strong>using</strong></font> System;
<font color="#a52a2a"> 2 </font><font color="#a52a2a"><strong>using</strong></font> System.Collections.Generic;
<font color="#a52a2a"> 3 </font><font color="#a52a2a"><strong>using</strong></font> System.Text;
<font color="#a52a2a"> 4 </font>
<font color="#a52a2a"> 5 </font><font color="#2e8b57"><strong>namespace</strong></font> ImageServer
<font color="#a52a2a"> 6 </font>{
<font color="#a52a2a"> 7 </font>    <font color="#2e8b57"><strong>class</strong></font> Img
<font color="#a52a2a"> 8 </font>    {
<font color="#a52a2a"> 9 </font>        <font color="#2e8b57"><strong>public</strong></font> <font color="#2e8b57"><strong>int</strong></font> cId;
<font color="#a52a2a">10 </font>        <font color="#2e8b57"><strong>public</strong></font> String cName;
<font color="#a52a2a">11 </font>        <font color="#2e8b57"><strong>public</strong></font> String cDescription;
<font color="#a52a2a">12 </font>        <font color="#0000ff">//public Bitmap cImage;</font>
<font color="#a52a2a">13 </font>
<font color="#a52a2a">14 </font>        <font color="#2e8b57"><strong>public</strong></font> Img(<font color="#2e8b57"><strong>int</strong></font> id, String name, String description<font color="#0000ff">/*, Bitmap img*/</font>)
<font color="#a52a2a">15 </font>        {
<font color="#a52a2a">16 </font>            cId = id;
<font color="#a52a2a">17 </font>            cName = name;
<font color="#a52a2a">18 </font>            cDescription = description;
<font color="#a52a2a">19 </font>            <font color="#0000ff">//cImage = img;</font>
<font color="#a52a2a">20 </font>        }
<font color="#a52a2a">21 </font>    }
<font color="#a52a2a">22 </font>}</pre>
<p>Now the Category.cs file:<br />
<code> </code></p>
<pre>
<font color="#a52a2a"> 1 </font><font color="#a52a2a"><strong>using</strong></font> System;
<font color="#a52a2a"> 2 </font><font color="#a52a2a"><strong>using</strong></font> System.Collections.Generic;
<font color="#a52a2a"> 3 </font><font color="#a52a2a"><strong>using</strong></font> System.Text;
<font color="#a52a2a"> 4 </font>
<font color="#a52a2a"> 5 </font><font color="#2e8b57"><strong>namespace</strong></font> ImageServer
<font color="#a52a2a"> 6 </font>{
<font color="#a52a2a"> 7 </font>
<font color="#a52a2a"> 8 </font>    <font color="#2e8b57"><strong>class</strong></font> Category
<font color="#a52a2a"> 9 </font>    {
<font color="#a52a2a">10 </font>        <font color="#2e8b57"><strong>public</strong></font> <font color="#2e8b57"><strong>int</strong></font> cId;
<font color="#a52a2a">11 </font>        <font color="#2e8b57"><strong>public</strong></font> String cName;
<font color="#a52a2a">12 </font>
<font color="#a52a2a">13 </font>        <font color="#2e8b57"><strong>public</strong></font> Category(<font color="#2e8b57"><strong>int</strong></font> id, String name)
<font color="#a52a2a">14 </font>        {
<font color="#a52a2a">15 </font>            cId = id;
<font color="#a52a2a">16 </font>            cName = name;
<font color="#a52a2a">17 </font>        }
<font color="#a52a2a">18 </font>
<font color="#a52a2a">19 </font>        <font color="#2e8b57"><strong>string</strong></font> ToString()
<font color="#a52a2a">20 </font>        {
<font color="#a52a2a">21 </font>            <font color="#a52a2a"><strong>return</strong></font> <font color="#ff00ff">"("</font> + cId + <font color="#ff00ff">")"</font> + cName;
<font color="#a52a2a">22 </font>        }
<font color="#a52a2a">23 </font>    }
<font color="#a52a2a">24 </font>}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2008/06/c-image-server-client-using-xml-for-the-application-protocol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# Database Connection Example Program</title>
		<link>http://www.dallinjones.com/2008/05/c-database-connection-example-program/</link>
		<comments>http://www.dallinjones.com/2008/05/c-database-connection-example-program/#comments</comments>
		<pubDate>Thu, 29 May 2008 21:03:04 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/2008/05/29/c-database-connection-example-program/</guid>
		<description><![CDATA[We were given a programming assignment in my network programming class that is defined as below. This is my solution to the assignment. I know it isn&#8217;t the best code in the world, but it works and will hopefully help someone else who is in need of knowing how to connect to a MSQL database [...]]]></description>
			<content:encoded><![CDATA[<p>We were given a programming assignment in my network programming class that is defined as below. This is my solution to the assignment. I know it isn&#8217;t the best code in the world, but it works and will hopefully help someone else who is in need of knowing how to connect to a MSQL database using C#.</p>
<p>Write a program that will connect to the Image Database, list the categories from the category table then when the user selects a category in the list, show the name of all images in that category in another list box. To access the database, you will need to be logged into CSEVPN.<span id="more-58"></span></p>
<h3>Form Design</h3>
<ul>
<li>Add an Open button that will connect to the database.</li>
<li>Add a Category ListBox.</li>
<li>Add an Image Title ListBox.</li>
</ul>
<h3>Open Button Event Routine</h3>
<ul>
<li>You will need to use System.Data.SqlClient name space.</li>
<li>You will need to define the fillowing database objects:
<ul>
<li>SqlConnection connct = null;</li>
<li>SqlCommand cmd = null;</li>
<li>SqlDataReader dr = null;</li>
</ul>
</li>
<li><a href="http://love.uvsc.edu/cns3550/SQLStatements.html" target="_blank">Please click here and read about the SQL select statement.</a></li>
<li>Please read about the SqlConnection, SqlCommand and SqlDataReader in your IDE helps. You should also be able to use ODBC drivers and objects.</li>
<li>You will need the following database connection string with your connection object:<br />
&#8220;user id=ImageDB;password=1mag3Database;data source=CNS-LOVE.csevpn.local;persist security info=False;initial catalog=ImageArchive&#8221;<br />
This database has two tables you will be using: Categories and Images.</li>
<li>The following code will select all categories and add them to the first list box.
<pre>connct = new SqlConnection(MY_CONNECTION_STRING);
connct.Open();
cmd = new SqlCommand("Select * from Categories", connct);
dr = cmd.ExecuteReader();
while (dr.Read())
{
	lstCategory.Items.Add(dr["Category"].ToString());
}</pre>
</li>
<li> YOU MUST CLOSE OUT ALL DB OBJECTS WHEN YOU FINISH WITH THEM:
<pre>if (dr != null)
{
	dr.Close();
	dr.Dispose();
	dr = null;
}
if (cmd != null)
{
	cmd.Dispose();
	cmd = null;
}
if (connct != null &amp;&amp; connct.State == ConnectionState.Open)
{
	connct.Close();
	connct.Dispose();
	connct = null;
}</pre>
</li>
<li> You will need to use the MouseDoubleClick event for your selection in the Category Listbox:
<pre>private void lstCategory_MouseDoubleClick(object sender, MouseEventArgs e)
{

}</pre>
</li>
<li> To get the correct image, you need to use a select with a WHERE clause:<br />
SELECT CIndex, Description FROM Images WHERE CIndex = n<br />
where n = the category number. Do not select all fields from the Image table, the picture field values are very large.<br />
So, where do you get a value for n? One simple solution is, when you read a category record, create an object that has the &#8220;Category&#8221; text and the &#8220;CIndex&#8221; value from the table. You can then override the ToString() method and add your new object&#8217;s reference to the category listbox items list.</li>
<li> The value you will add to the image list box will be from the table field &#8220;Description&amp;quot.</li>
</ul>
<p>Here is a screen shot of my program actually running:</p>
<p><a href="http://www.dallinjones.com/wp-content/uploads/2008/05/screenshot.bmp" onclick="return false;" title="Direct link to file"><img src="http://www.dallinjones.com/wp-content/uploads/2008/05/screenshot.bmp" alt="Database Connection Program" height="307" width="499" /></a></p>
<p>Here is a copy of my code:</p>
<pre><code></code>FormMain.cs:
<font color="#a52a2a"> 1 </font><font color="#a52a2a"><strong>using</strong></font> System;
<font color="#a52a2a"> 2 </font><font color="#a52a2a"><strong>using</strong></font> System.Collections.Generic;
<font color="#a52a2a"> 3 </font><font color="#a52a2a"><strong>using</strong></font> System.ComponentModel;
<font color="#a52a2a"> 4 </font><font color="#a52a2a"><strong>using</strong></font> System.Data;
<font color="#a52a2a"> 5 </font><font color="#a52a2a"><strong>using</strong></font> System.Drawing;
<font color="#a52a2a"> 6 </font><font color="#a52a2a"><strong>using</strong></font> System.Text;
<font color="#a52a2a"> 7 </font><font color="#a52a2a"><strong>using</strong></font> System.Windows.Forms;
<font color="#a52a2a"> 8 </font><font color="#a52a2a"><strong>using</strong></font> System.Data.SqlClient;
<font color="#a52a2a"> 9 </font>
<font color="#a52a2a">10 </font><font color="#2e8b57"><strong>namespace</strong></font> DatabaseConnect
<font color="#a52a2a">11 </font>{
<font color="#a52a2a">12 </font>    <font color="#2e8b57"><strong>public</strong></font> <font color="#a52a2a"><strong>partial</strong></font> <font color="#2e8b57"><strong>class</strong></font> FormMain : Form
<font color="#a52a2a">13 </font>    {
<font color="#a52a2a">14 </font>        SqlConnection connct = <font color="#ff00ff">null</font>;
<font color="#a52a2a">15 </font>        SqlCommand cmd = <font color="#ff00ff">null</font>;
<font color="#a52a2a">16 </font>        SqlDataReader dr = <font color="#ff00ff">null</font>;
<font color="#a52a2a">17 </font>        String MY_CONNECTION_STRING = <font color="#ff00ff">"Data Source=CNS-LOVE.csevpn.local;Initial Catalog=ImageArchive;Persist Security Info=True;User ID=ImageDB;Password=MyPassword"</font>;
<font color="#a52a2a">18 </font>        System.Collections.ArrayList categories;
<font color="#a52a2a">19 </font>
<font color="#a52a2a">20 </font>        <font color="#2e8b57"><strong>public</strong></font> FormMain()
<font color="#a52a2a">21 </font>        {
<font color="#a52a2a">22 </font>            InitializeComponent();
<font color="#a52a2a">23 </font>        }
<font color="#a52a2a">24 </font>
<font color="#a52a2a">25 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> buttonOpen_Click(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)
<font color="#a52a2a">26 </font>        {
<font color="#a52a2a">27 </font>            connct = <font color="#a52a2a"><strong>new</strong></font> SqlConnection(MY_CONNECTION_STRING);
<font color="#a52a2a">28 </font>            connct.Open();
<font color="#a52a2a">29 </font>            cmd = <font color="#a52a2a"><strong>new</strong></font> SqlCommand(<font color="#ff00ff">"Select * from Categories"</font>, connct);
<font color="#a52a2a">30 </font>            dr = cmd.ExecuteReader();
<font color="#a52a2a">31 </font>            categories = <font color="#a52a2a"><strong>new</strong></font> System.Collections.ArrayList();
<font color="#a52a2a">32 </font>            <font color="#a52a2a"><strong>while</strong></font> (dr.Read())
<font color="#a52a2a">33 </font>            {
<font color="#a52a2a">34 </font>                categories.Add(<font color="#a52a2a"><strong>new</strong></font> Category(dr[<font color="#ff00ff">"Category"</font>].ToString(), Int16.Parse(dr[<font color="#ff00ff">"CIndex"</font>].ToString())));
<font color="#a52a2a">35 </font>                listCategories.Items.Add(dr[<font color="#ff00ff">"Category"</font>].ToString());
<font color="#a52a2a">36 </font>            }
<font color="#a52a2a">37 </font>            <font color="#a52a2a"><strong>if</strong></font> (dr != <font color="#ff00ff">null</font>)
<font color="#a52a2a">38 </font>            {
<font color="#a52a2a">39 </font>                dr.Close();
<font color="#a52a2a">40 </font>                dr.Dispose();
<font color="#a52a2a">41 </font>                dr = <font color="#ff00ff">null</font>;
<font color="#a52a2a">42 </font>            }
<font color="#a52a2a">43 </font>            <font color="#a52a2a"><strong>if</strong></font> (cmd != <font color="#ff00ff">null</font>)
<font color="#a52a2a">44 </font>            {
<font color="#a52a2a">45 </font>                cmd.Dispose();
<font color="#a52a2a">46 </font>                cmd = <font color="#ff00ff">null</font>;
<font color="#a52a2a">47 </font>            }
<font color="#a52a2a">48 </font>            <font color="#a52a2a"><strong>if</strong></font> (connct != <font color="#ff00ff">null</font> &amp;&amp; connct.State == ConnectionState.Open)
<font color="#a52a2a">49 </font>            {
<font color="#a52a2a">50 </font>                connct.Close();
<font color="#a52a2a">51 </font>                connct.Dispose();
<font color="#a52a2a">52 </font>                connct = <font color="#ff00ff">null</font>;
<font color="#a52a2a">53 </font>            }
<font color="#a52a2a">54 </font>        }
<font color="#a52a2a">55 </font>
<font color="#a52a2a">56 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> listCategories_DoubleClick(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)
<font color="#a52a2a">57 </font>        {
<font color="#a52a2a">58 </font>            listImages.Items.Clear();
<font color="#a52a2a">59 </font>            connct = <font color="#a52a2a"><strong>new</strong></font> SqlConnection(MY_CONNECTION_STRING);
<font color="#a52a2a">60 </font>            connct.Open();
<font color="#a52a2a">61 </font>            cmd = <font color="#a52a2a"><strong>new</strong></font> SqlCommand(<font color="#ff00ff">"Select * from Images WHERE cIndex =@n"</font>, connct);
<font color="#a52a2a">62 </font>            cmd.Parameters.AddWithValue(<font color="#ff00ff">"@n"</font>, ((Category)(categories[listCategories.SelectedIndex])).getId());
<font color="#a52a2a">63 </font>            dr = cmd.ExecuteReader();
<font color="#a52a2a">64 </font>            <font color="#a52a2a"><strong>while</strong></font> (dr.Read())
<font color="#a52a2a">65 </font>            {
<font color="#a52a2a">66 </font>                listImages.Items.Add(dr[<font color="#ff00ff">"FileName"</font>].ToString());
<font color="#a52a2a">67 </font>            }
<font color="#a52a2a">68 </font>            <font color="#a52a2a"><strong>if</strong></font> (dr != <font color="#ff00ff">null</font>)
<font color="#a52a2a">69 </font>            {
<font color="#a52a2a">70 </font>                dr.Close();
<font color="#a52a2a">71 </font>                dr.Dispose();
<font color="#a52a2a">72 </font>                dr = <font color="#ff00ff">null</font>;
<font color="#a52a2a">73 </font>            }
<font color="#a52a2a">74 </font>            <font color="#a52a2a"><strong>if</strong></font> (cmd != <font color="#ff00ff">null</font>)
<font color="#a52a2a">75 </font>            {
<font color="#a52a2a">77 </font>                cmd.Dispose();
<font color="#a52a2a">77 </font>                cmd = <font color="#ff00ff">null</font>;
<font color="#a52a2a">78 </font>            }
<font color="#a52a2a">79 </font>            <font color="#a52a2a"><strong>if</strong></font> (connct != <font color="#ff00ff">null</font> &amp;&amp; connct.State == ConnectionState.Open)
<font color="#a52a2a">80 </font>            {
<font color="#a52a2a">81 </font>                connct.Close();
<font color="#a52a2a">82 </font>                connct.Dispose();
<font color="#a52a2a">83 </font>                connct = <font color="#ff00ff">null</font>;
<font color="#a52a2a">84 </font>            }
<font color="#a52a2a">85 </font>        }
<font color="#a52a2a">86 </font>
<font color="#a52a2a">87 </font>    }
<font color="#a52a2a">88 </font>}</pre>
<p><code><br />
</code></p>
<p><meta name="Generator" content="Vim/7.0" /><br />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" /></p>
<pre>Category.cs
<font color="#a52a2a"> 1 </font><font color="#a52a2a"><strong>using</strong></font> System;
<font color="#a52a2a"> 2 </font><font color="#a52a2a"><strong>using</strong></font> System.Collections.Generic;
<font color="#a52a2a"> 3 </font><font color="#a52a2a"><strong>using</strong></font> System.Text;
<font color="#a52a2a"> 4 </font>
<font color="#a52a2a"> 5 </font><font color="#2e8b57"><strong>namespace</strong></font> DatabaseConnect
<font color="#a52a2a"> 6 </font>{
<font color="#a52a2a"> 7 </font>    <font color="#2e8b57"><strong>class</strong></font> Category
<font color="#a52a2a"> 8 </font>    {
<font color="#a52a2a"> 9 </font>        <font color="#2e8b57"><strong>private</strong></font> String name;
<font color="#a52a2a">10 </font>        <font color="#2e8b57"><strong>private</strong></font> Int16 id;
<font color="#a52a2a">11 </font>
<font color="#a52a2a">12 </font>        <font color="#2e8b57"><strong>public</strong></font> Category(String n, Int16 i)
<font color="#a52a2a">13 </font>        {
<font color="#a52a2a">14 </font>            name = n;
<font color="#a52a2a">15 </font>            id = i;
<font color="#a52a2a">16 </font>        }
<font color="#a52a2a">17 </font>
<font color="#a52a2a">18 </font>        <font color="#2e8b57"><strong>public</strong></font> String getName()
<font color="#a52a2a">19 </font>        {
<font color="#a52a2a">20 </font>            <font color="#a52a2a"><strong>return</strong></font> name;
<font color="#a52a2a">21 </font>        }
<font color="#a52a2a">22 </font>
<font color="#a52a2a">23 </font>        <font color="#2e8b57"><strong>public</strong></font> Int16 getId()
<font color="#a52a2a">24 </font>        {
<font color="#a52a2a">25 </font>            <font color="#a52a2a"><strong>return</strong></font> id;
<font color="#a52a2a">26 </font>        }
<font color="#a52a2a">27 </font>    }
<font color="#a52a2a">28 </font>}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2008/05/c-database-connection-example-program/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Multicast Network Chat in C#</title>
		<link>http://www.dallinjones.com/2008/05/multicast-network-chat/</link>
		<comments>http://www.dallinjones.com/2008/05/multicast-network-chat/#comments</comments>
		<pubDate>Wed, 21 May 2008 19:55:33 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/2008/05/21/multicast-network-chat/</guid>
		<description><![CDATA[In my network programming class CS3670 at UVU (UVSC) we had an assignment to write a multicast chat program that would allow everyone in the class talk in the same chat window. This was used to show that we were able to use the multicast addresses and to also demonstrate our use of the UDP [...]]]></description>
			<content:encoded><![CDATA[<p>In my network programming class CS3670 at UVU (UVSC) we had an assignment to write a multicast chat program that would allow everyone in the class talk in the same chat window. This was used to show that we were able to use the multicast addresses and to also demonstrate our use of the UDP client libraries. Here is my solution:<span id="more-55"></span></p>
<pre>
<font color="#a52a2a">  1 </font><font color="#a52a2a"><strong>using</strong></font> System;

<font color="#a52a2a">  2 </font><font color="#a52a2a"><strong>using</strong></font> System.Collections.Generic;

<font color="#a52a2a">  3 </font><font color="#a52a2a"><strong>using</strong></font> System.ComponentModel;

<font color="#a52a2a">  4 </font><font color="#a52a2a"><strong>using</strong></font> System.Data;

<font color="#a52a2a">  5 </font><font color="#a52a2a"><strong>using</strong></font> System.Drawing;

<font color="#a52a2a">  6 </font><font color="#a52a2a"><strong>using</strong></font> System.Text;

<font color="#a52a2a">  7 </font><font color="#a52a2a"><strong>using</strong></font> System.Windows.Forms;

<font color="#a52a2a">  8 </font><font color="#a52a2a"><strong>using</strong></font> System.Net;

<font color="#a52a2a">  9 </font><font color="#a52a2a"><strong>using</strong></font> System.Net.Sockets;

<font color="#a52a2a"> 10 </font><font color="#a52a2a"><strong>using</strong></font> System.Threading;

<font color="#a52a2a"> 11 </font>

<font color="#a52a2a"> 12 </font><font color="#2e8b57"><strong>namespace</strong></font> MultiCastChat

<font color="#a52a2a"> 13 </font>{

<font color="#a52a2a"> 14 </font>    <font color="#2e8b57"><strong>public</strong></font> <font color="#a52a2a"><strong>partial</strong></font> <font color="#2e8b57"><strong>class</strong></font> formMain : Form

<font color="#a52a2a"> 15 </font>    {

<font color="#a52a2a"> 16 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>const</strong></font> <font color="#2e8b57"><strong>int</strong></font> TIME_TO_LIVE = <font color="#ff00ff">50</font>;

<font color="#a52a2a"> 17 </font>        <font color="#2e8b57"><strong>private</strong></font> UdpClient client = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 18 </font>        <font color="#2e8b57"><strong>private</strong></font> IPAddress group = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 19 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>int</strong></font> port = <font color="#ff00ff">0</font>;

<font color="#a52a2a"> 20 </font>        <font color="#2e8b57"><strong>private</strong></font> IPEndPoint multiCastEP = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 21 </font>

<font color="#a52a2a"> 22 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>bool</strong></font> stayAlive = <font color="#ff00ff">true</font>;

<font color="#a52a2a"> 23 </font>        <font color="#2e8b57"><strong>private</strong></font> Thread receiveThread = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 24 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>string</strong></font> defaultNameText = <font color="#ff00ff">""</font>;

<font color="#a52a2a"> 25 </font>

<font color="#a52a2a"> 26 </font>        <font color="#2e8b57"><strong>public</strong></font> <font color="#2e8b57"><strong>delegate</strong></font> <font color="#2e8b57"><strong>void</strong></font> dListOngoing(<font color="#2e8b57"><strong>string</strong></font> message);

<font color="#a52a2a"> 27 </font>        <font color="#2e8b57"><strong>public</strong></font> dListOngoing listOngoing;

<font color="#a52a2a"> 28 </font>

<font color="#a52a2a"> 29 </font>        <font color="#2e8b57"><strong>public</strong></font> formMain()

<font color="#a52a2a"> 30 </font>        {

<font color="#a52a2a"> 31 </font>            InitializeComponent();

<font color="#a52a2a"> 32 </font>        }

<font color="#a52a2a"> 33 </font>

<font color="#a52a2a"> 34 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> formMain_Load(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)

<font color="#a52a2a"> 35 </font>        {

<font color="#a52a2a"> 36 </font>            comboAddress.SelectedIndex = <font color="#ff00ff">0</font>;

<font color="#a52a2a"> 37 </font>            defaultNameText = textboxName.Text;

<font color="#a52a2a"> 38 </font>            <font color="#a52a2a"><strong>this</strong></font>.AcceptButton = buttonJoin;

<font color="#a52a2a"> 39 </font>            <font color="#a52a2a"><strong>this</strong></font>.CancelButton = buttonExit;

<font color="#a52a2a"> 40 </font>            <font color="#a52a2a"><strong>this</strong></font>.buttonJoin.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a"> 41 </font>            <font color="#a52a2a"><strong>this</strong></font>.buttonExit.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a"> 42 </font>            <font color="#a52a2a"><strong>this</strong></font>.buttonSend.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a"> 43 </font>            <font color="#a52a2a"><strong>this</strong></font>.textboxPort.Text = <font color="#ff00ff">""</font> + <font color="#ff00ff">10002</font>;

<font color="#a52a2a"> 44 </font>            textboxInput.Focus();

<font color="#a52a2a"> 45 </font>            listOngoing = <font color="#a52a2a"><strong>new</strong></font> dListOngoing(displayMessage);

<font color="#a52a2a"> 46 </font>        }

<font color="#a52a2a"> 47 </font>

<font color="#a52a2a"> 48 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> buttonSend_Click(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)

<font color="#a52a2a"> 49 </font>        {

<font color="#a52a2a"> 50 </font>            <font color="#a52a2a"><strong>this</strong></font>.SendMessage(textboxInput.Text);

<font color="#a52a2a"> 51 </font>        }

<font color="#a52a2a"> 52 </font>

<font color="#a52a2a"> 53 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> buttonEnd_Click(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)

<font color="#a52a2a"> 54 </font>        {

<font color="#a52a2a"> 55 </font>            <font color="#a52a2a"><strong>this</strong></font>.LeaveGroup();

<font color="#a52a2a"> 56 </font>

<font color="#a52a2a"> 57 </font>            buttonJoin.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a"> 58 </font>            buttonEnd.Enabled = <font color="#ff00ff">false</font>;

<font color="#a52a2a"> 59 </font>            buttonSend.Enabled = <font color="#ff00ff">false</font>;

<font color="#a52a2a"> 60 </font>            <font color="#a52a2a"><strong>this</strong></font>.AcceptButton = buttonJoin;

<font color="#a52a2a"> 61 </font>            <font color="#a52a2a"><strong>this</strong></font>.CancelButton = buttonExit;

<font color="#a52a2a"> 62 </font>        }

<font color="#a52a2a"> 63 </font>

<font color="#a52a2a"> 64 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> SendMessage(String message)

<font color="#a52a2a"> 65 </font>        {

<font color="#a52a2a"> 66 </font>            Byte[] buff;

<font color="#a52a2a"> 67 </font>

<font color="#a52a2a"> 68 </font>            buff = Encoding.ASCII.GetBytes(textboxName.Text + <font color="#ff00ff">": "</font> + message);

<font color="#a52a2a"> 69 </font>            client.Send(buff, buff.Length, multiCastEP);

<font color="#a52a2a"> 70 </font>            textboxInput.Text = <font color="#ff00ff">""</font>;

<font color="#a52a2a"> 71 </font>        }

<font color="#a52a2a"> 72 </font>

<font color="#a52a2a"> 73 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> LeaveGroup()

<font color="#a52a2a"> 74 </font>        {

<font color="#a52a2a"> 75 </font>            <font color="#a52a2a"><strong>if</strong></font> (group != <font color="#ff00ff">null</font>)

<font color="#a52a2a"> 76 </font>            {

<font color="#a52a2a"> 77 </font>                SendMessage(<font color="#ff00ff">"Leaving Chat"</font>);

<font color="#a52a2a"> 78 </font>                Application.DoEvents();

<font color="#a52a2a"> 79 </font>                Thread.Sleep(<font color="#ff00ff">500</font>);

<font color="#a52a2a"> 80 </font>                stayAlive = <font color="#ff00ff">false</font>;

<font color="#a52a2a"> 81 </font>                <font color="#a52a2a"><strong>while</strong></font> (receiveThread.IsAlive) Application.DoEvents();

<font color="#a52a2a"> 82 </font>                receiveThread.Join();

<font color="#a52a2a"> 83 </font>                client.DropMulticastGroup(group);

<font color="#a52a2a"> 84 </font>                client.Close();

<font color="#a52a2a"> 85 </font>                client = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 86 </font>                group = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 87 </font>                multiCastEP = <font color="#ff00ff">null</font>;

<font color="#a52a2a"> 88 </font>            }

<font color="#a52a2a"> 89 </font>        }

<font color="#a52a2a"> 90 </font>

<font color="#a52a2a"> 91 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> JoinGroup()

<font color="#a52a2a"> 92 </font>        {

<font color="#a52a2a"> 93 </font>            <font color="#a52a2a"><strong>if</strong></font> (!<font color="#2e8b57"><strong>int</strong></font>.TryParse(textboxPort.Text, <font color="#a52a2a"><strong>out</strong></font> port))

<font color="#a52a2a"> 94 </font>                <font color="#a52a2a"><strong>throw</strong></font> <font color="#a52a2a"><strong>new</strong></font> ApplicationException(<font color="#ff00ff">"Invalid Port Number"</font>);

<font color="#a52a2a"> 95 </font>            <font color="#a52a2a"><strong>if</strong></font> (!IPAddress.TryParse(comboAddress.Text, <font color="#a52a2a"><strong>out</strong></font> group))

<font color="#a52a2a"> 96 </font>                <font color="#a52a2a"><strong>throw</strong></font> <font color="#a52a2a"><strong>new</strong></font> ApplicationException(<font color="#ff00ff">"Invalid Multicast Group Address"</font>);

<font color="#a52a2a"> 97 </font>

<font color="#a52a2a"> 98 </font>            client = <font color="#a52a2a"><strong>new</strong></font> UdpClient(port);

<font color="#a52a2a"> 99 </font>            client.JoinMulticastGroup(group, TIME_TO_LIVE);

<font color="#a52a2a">100 </font>            multiCastEP = <font color="#a52a2a"><strong>new</strong></font> IPEndPoint(group, port);

<font color="#a52a2a">101 </font>

<font color="#a52a2a">102 </font>            <font color="#a52a2a"><strong>this</strong></font>.stayAlive = <font color="#ff00ff">true</font>;

<font color="#a52a2a">103 </font>            receiveThread = <font color="#a52a2a"><strong>new</strong></font> Thread(<font color="#a52a2a"><strong>this</strong></font>.runThread);

<font color="#a52a2a">104 </font>            receiveThread.Start();

<font color="#a52a2a">105 </font>

<font color="#a52a2a">106 </font>            <font color="#a52a2a"><strong>this</strong></font>.SendMessage(<font color="#ff00ff">"has joined the chat!"</font>);

<font color="#a52a2a">107 </font>            <font color="#a52a2a"><strong>this</strong></font>.AcceptButton = buttonSend;

<font color="#a52a2a">108 </font>            <font color="#a52a2a"><strong>this</strong></font>.CancelButton = buttonEnd;

<font color="#a52a2a">109 </font>            <font color="#a52a2a"><strong>this</strong></font>.buttonJoin.Enabled = <font color="#ff00ff">false</font>;

<font color="#a52a2a">110 </font>            <font color="#a52a2a"><strong>this</strong></font>.buttonEnd.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a">111 </font>            <font color="#a52a2a"><strong>this</strong></font>.buttonSend.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a">112 </font>            textboxInput.Focus();

<font color="#a52a2a">113 </font>        }

<font color="#a52a2a">114 </font>

<font color="#a52a2a">115 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> runThread()

<font color="#a52a2a">116 </font>        {

<font color="#a52a2a">117 </font>            Byte[] buff;

<font color="#a52a2a">118 </font>            String message;

<font color="#a52a2a">119 </font>            <font color="#a52a2a"><strong>while</strong></font> (stayAlive)

<font color="#a52a2a">120 </font>            {

<font color="#a52a2a">121 </font>                IPEndPoint ep = <font color="#ff00ff">null</font>;

<font color="#a52a2a">122 </font>                <font color="#a52a2a"><strong>if</strong></font> (client.Available &gt; <font color="#ff00ff">0</font>)

<font color="#a52a2a">123 </font>                {

<font color="#a52a2a">124 </font>                    buff = client.Receive(<font color="#a52a2a"><strong>ref</strong></font> ep);

<font color="#a52a2a">125 </font>                    message = Encoding.ASCII.GetString(buff);

<font color="#a52a2a">126 </font>                    <font color="#a52a2a"><strong>this</strong></font>.Invoke(<font color="#a52a2a"><strong>this</strong></font>.listOngoing, message);

<font color="#a52a2a">127 </font>                }

<font color="#a52a2a">128 </font>                <font color="#a52a2a"><strong>else</strong></font>

<font color="#a52a2a">129 </font>                {

<font color="#a52a2a">130 </font>                    Thread.Sleep(<font color="#ff00ff">10</font>);

<font color="#a52a2a">131 </font>                }

<font color="#a52a2a">132 </font>            }

<font color="#a52a2a">133 </font>        }

<font color="#a52a2a">134 </font>

<font color="#a52a2a">135 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> buttonExit_Click(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)

<font color="#a52a2a">136 </font>        {

<font color="#a52a2a">137 </font>            <font color="#a52a2a"><strong>this</strong></font>.LeaveGroup();

<font color="#a52a2a">138 </font>            buttonJoin.Enabled = <font color="#ff00ff">true</font>;

<font color="#a52a2a">139 </font>            buttonEnd.Enabled = <font color="#ff00ff">false</font>;

<font color="#a52a2a">140 </font>            buttonSend.Enabled = <font color="#ff00ff">false</font>;

<font color="#a52a2a">141 </font>            <font color="#a52a2a"><strong>this</strong></font>.AcceptButton = buttonJoin;

<font color="#a52a2a">142 </font>            <font color="#a52a2a"><strong>this</strong></font>.CancelButton = buttonExit;

<font color="#a52a2a">143 </font>            <font color="#a52a2a"><strong>this</strong></font>.Close();

<font color="#a52a2a">144 </font>        }

<font color="#a52a2a">145 </font>

<font color="#a52a2a">146 </font>        <font color="#2e8b57"><strong>public</strong></font> <font color="#2e8b57"><strong>void</strong></font> displayMessage(<font color="#2e8b57"><strong>string</strong></font> message)

<font color="#a52a2a">147 </font>        {

<font color="#a52a2a">148 </font>            lstOngoing.Items.Add(message);

<font color="#a52a2a">149 </font>            lstOngoing.Refresh();

<font color="#a52a2a">150 </font>        }

<font color="#a52a2a">151 </font>

<font color="#a52a2a">152 </font>        <font color="#2e8b57"><strong>private</strong></font> <font color="#2e8b57"><strong>void</strong></font> buttonJoin_Click(<font color="#2e8b57"><strong>object</strong></font> sender, EventArgs e)

<font color="#a52a2a">153 </font>        {

<font color="#a52a2a">154 </font>            <font color="#a52a2a"><strong>this</strong></font>.JoinGroup();

<font color="#a52a2a">155 </font>        }

<font color="#a52a2a">156 </font>    }

<font color="#a52a2a">157 </font>}</pre>
<p>Here is a screen shot of my application connected to another member of the class.</p>
<p><a href="http://www.dallinjones.com/2008/05/21/multicast-network-chat/multicast-network-chat-screenshot/" rel="attachment wp-att-56" title="Multicast Network Chat Screenshot"><img src="http://www.dallinjones.com/wp-content/uploads/2008/05/screenshot.JPG" alt="Multicast Network Chat Screenshot" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2008/05/multicast-network-chat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# (C Sharp) Console and Input Program</title>
		<link>http://www.dallinjones.com/2008/05/c-sharp-console-and-input-program/</link>
		<comments>http://www.dallinjones.com/2008/05/c-sharp-console-and-input-program/#comments</comments>
		<pubDate>Tue, 20 May 2008 20:43:51 +0000</pubDate>
		<dc:creator>SlipStream</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.dallinjones.com/2008/05/20/c-sharp-console-and-input-program/</guid>
		<description><![CDATA[Well, I&#8217;ve started a network development class at UVU (UVSC) and I have to quickly learn C Sharp to be able to get my assignments and labs done. Here is my version of the first lab (which is a simple hello world style lab)

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 
 [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I&#8217;ve started a network development class at UVU (UVSC) and I have to quickly learn C Sharp to be able to get my assignments and labs done. Here is my version of the first lab (which is a simple hello world style lab)<span id="more-54"></span></p>
<pre>
<font color="#a52a2a"> 1 </font><font color="#a52a2a"><strong>using</strong></font> System;
<font color="#a52a2a"> 2 </font><font color="#a52a2a"><strong>using</strong></font> System.Collections.Generic;
<font color="#a52a2a"> 3 </font><font color="#a52a2a"><strong>using</strong></font> System.Text;
<font color="#a52a2a"> 4 </font>
<font color="#a52a2a"> 5 </font><font color="#2e8b57"><strong>namespace</strong></font> Names
<font color="#a52a2a"> 6 </font>{
<font color="#a52a2a"> 7 </font>    <font color="#2e8b57"><strong>class</strong></font> Program
<font color="#a52a2a"> 8 </font>    {
<font color="#a52a2a"> 9 </font>        <font color="#2e8b57"><strong>static</strong></font> <font color="#2e8b57"><strong>void</strong></font> Main(<font color="#2e8b57"><strong>string</strong></font>[] args)
<font color="#a52a2a">10 </font>        {
<font color="#a52a2a">11 </font>            String firstName;
<font color="#a52a2a">12 </font>            String lastName;
<font color="#a52a2a">13 </font>            String fullName;
<font color="#a52a2a">14 </font>
<font color="#a52a2a">15 </font>            System.Console.Write(<font color="#ff00ff">"Please enter your first name: "</font>);
<font color="#a52a2a">16 </font>            firstName = System.Console.ReadLine();
<font color="#a52a2a">17 </font>
<font color="#a52a2a">18 </font>            System.Console.Write(<font color="#ff00ff">"Please enter your last name: "</font>);
<font color="#a52a2a">19 </font>            lastName = System.Console.ReadLine();
<font color="#a52a2a">20 </font>
<font color="#a52a2a">21 </font>            fullName = firstName + <font color="#ff00ff">" "</font> + lastName;
<font color="#a52a2a">22 </font>            System.Console.WriteLine(<font color="#ff00ff">"your name (first last) is: "</font> + fullName);
<font color="#a52a2a">23 </font>
<font color="#a52a2a">24 </font>            fullName = lastName + <font color="#ff00ff">", "</font> + firstName;
<font color="#a53a2a">25 </font>            System.Console.WriteLine(<font color="#ff00ff">"your name (last, first) is: "</font> + fullName);
<font color="#a52a2a">26 </font>
<font color="#a52a2a">27 </font>            System.Console.ReadLine();
<font color="#a52a2a">28 </font>        }
<font color="#a52a2a">29 </font>    }
<font color="#a52a2a">30 </font>}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dallinjones.com/2008/05/c-sharp-console-and-input-program/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

