Introduction to TCP client server in C#

Introduction

This is a simple implementation of a TCP client server relationship.

To use

Compile the server and client programs separately. Before compiling change the IP address in both programs to match that of your machine (NOTE : to get your IP address run 'ipconfig' from the command prompt in Windows NT/2000 m/c's)

When the server program is run, it will indicate at which IP it is running and the port it is listening to. Now run the client program is run , so as to establish a connection with the server.

When a connection is established the server will display the IP address and Port from where it has accepted the connection and client will ask for the string which is to be transmitted to the server.

The server on reciept of the string will display it, send an acknowledgement which will be recieved by the client.

The client can be either run from the same machine as the server or from a different machine. If run from a different machine then a network connection should exist between the machines running the server and client programs

Collapse
//


/* Server Program */

using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

public class serv {
public static void Main() {
try {
IPAddress ipAd = IPAddress.Parse("172.21.5.99");
// use local m/c IP address, and

// use the same in the client


/* Initializes the Listener */
TcpListener myList=new TcpListener(ipAd,8001);

/* Start Listeneting at the specified port */
myList.Start();

Console.WriteLine("The server is running at port 8001...");
Console.WriteLine("The local End point is :" +
myList.LocalEndpoint );
Console.WriteLine("Waiting for a connection.....");

Socket s=myList.AcceptSocket();
Console.WriteLine("Connection accepted from " + s.RemoteEndPoint);

byte[] b=new byte[100];
int k=s.Receive(b);
Console.WriteLine("Recieved...");
for (int i=0;i Console.Write(Convert.ToChar(b[i]));

ASCIIEncoding asen=new ASCIIEncoding();
s.Send(asen.GetBytes("The string was recieved by the server."));
Console.WriteLine("\nSent Acknowledgement");
/* clean up */
s.Close();
myList.Stop();

}
catch (Exception e) {
Console.WriteLine("Error..... " + e.StackTrace);
}
}

}

---------------------------------------------------------------------------

/* Client Program */

using System;
using System.IO;
using System.Net;
using System.Text;
using System.Net.Sockets;


public class clnt {

public static void Main() {

try {
TcpClient tcpclnt = new TcpClient();
Console.WriteLine("Connecting.....");

tcpclnt.Connect("172.21.5.99",8001);
// use the ipaddress as in the server program


Console.WriteLine("Connected");
Console.Write("Enter the string to be transmitted : ");

String str=Console.ReadLine();
Stream stm = tcpclnt.GetStream();

ASCIIEncoding asen= new ASCIIEncoding();
byte[] ba=asen.GetBytes(str);
Console.WriteLine("Transmitting.....");

stm.Write(ba,0,ba.Length);

byte[] bb=new byte[100];
int k=stm.Read(bb,0,100);

for (int i=0;i Console.Write(Convert.ToChar(bb[i]));

tcpclnt.Close();
}

catch (Exception e) {
Console.WriteLine("Error..... " + e.StackTrace);
}
}

}

//

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

from: http://www.codeproject.com/KB/IP/tcpclientserver.aspx

S.Thangaraju



Location: United States United States

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
Read Comments

Add icon to menu



Introduction
Here I am me again, with other programming trick. VB doesn't provide any support to icons in the menus (VB 6 and previous). Then, to accomplish such task it is necessary to run over to calls native API of Windows.
Purpose
Some programmers say that that is unnecessary. But it is common the users they to use the toolbar in most of the cases. It is interesting that he can associate the menu options the entrances in the toolbar.

For an application to be easy to use, it should be the most friendliest possible and not to demand of the user, complex reasoning.

The people use computers to activate your tasks and to win time.

The road of the stones
The best way to accomplish this task, would be with a visual atmosphere. Where you could choose in the list of available menus the item of wanted menu and in other (parallel) the wanted icon (what is made by other tools).

However, I will teach the less friendly, however functional way of the you make it.

API
Collapse
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long


Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function SetMenuItemBitmaps Lib "user32"
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long

Const MF_BYPOSITION = &H400&

Code Piece

Collapse
Private Sub SetMenuIcon()
On Error Resume Next

Dim hMenu As Long

Dim hSubMenu As Long

Dim Ret As Long

'Get main menu ID


hMenu = GetMenu(hwnd)


'


'MENU FILE


'Get sub menu 0 (File items)


hSubMenu = GetSubMenu(hMenu, 0)


'set bitmap to menu item, by ordinal


Ret = SetMenuItemBitmaps(hSubMenu, 0, MF_BYPOSITION, iNew.Picture, iNew.Picture)

Ret = SetMenuItemBitmaps(hSubMenu, 1, MF_BYPOSITION, iOpen.Picture, iOpen.Picture)

Ret = SetMenuItemBitmaps(hSubMenu, 2, MF_BYPOSITION, iSave.Picture, iSave.Picture)

'Skip the separator (it's 3)


Ret = SetMenuItemBitmaps(hSubMenu, 4, MF_BYPOSITION, iSave.Picture, iSave.Picture)

'Skip the separator (it's 5)


Ret = SetMenuItemBitmaps(hSubMenu, 6, MF_BYPOSITION, iExit.Picture, iExit.Picture)

' The rest of the code was removed to maintain clear. See in the file 'ZIP the complete and functional example.


End Sub

The icon may be 14x15 pixels.
If you have some doubt or suggestion, order an email.

Contact
E-mail: willians@bb.com.br
MSN: willian_cpp_br@hotmail.com
ICQ# 89506722
Phone: +55 (64) 612-6030
Fax: +55 (64) 612-6010

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
Read Comments