SIGN UP MEMBER LOGIN:    
ARTICLE

Socket Programming

Posted by Neelam Iyer Articles | Networking October 01, 2001
This is a simple Client/Server program showing the communication taking place between the client and the server.
Reader Level:
Download Files:
 

Description

This is a simple Client/Server program showing the communication taking place between the client and the server.

Server is a console based application and the Client is a Windows application. The client sends a message to the server which is converted by the server into upper case and returned back to the client.





Souce code

//Server Code
using System;
using System.Net.Sockets;
using System.IO ;
public class Echoserver
{
//entry point of main method....
public static void Main()
{
//TcpListener is listening on the given port... {
TcpListener tcpListener = new TcpListener(1234);
tcpListener.Start();
Console.WriteLine("Server Started") ;
//Accepts a new connection...
Socket socketForClient = tcpListener.AcceptSocket();
//StreamWriter and StreamReader Classes for reading and writing the data to and fro.
//The server reads the meassage sent by the Client ,converts it to upper case and sends it back to the client.
//Lastly close all the streams.
try
{
if (socketForClient.Connected)
{
while(true)
{
Console.WriteLine("Client connected");
NetworkStream networkStream =
new NetworkStream(socketForClient);
StreamWriter streamWriter =
new StreamWriter(networkStream);
StreamReader streamReader =
new StreamReader(networkStream);
string line = streamReader.ReadLine();
Console.WriteLine("Read:" +line);
line=line.ToUpper()+ "!";
streamWriter.WriteLine(line);
Console.WriteLine("Wrote:"+line);
streamWriter.Flush() ;
}
}
socketForClient.Close();
Console.WriteLine("Exiting...");
}
catch(Exception e)
{
Console.WriteLine(e.ToString()) ;
}
}
}
//Client Code
using System;
using System.Net.Sockets;
using System.Windows.Forms;
using System.IO ;
using System.ComponentModel ;
using System.Drawing;
public class Echoclient: Form
{
//Define the components...
private Button b1;
private TextBox t1,ta;
TcpClient myclient;
private NetworkStream networkStream ;
private StreamReader streamReader ;
private StreamWriter streamWriter ;
//constructor initialising...
public Echoclient()
{
InitializeComponent();
}
//main method...
public static void Main()
{
Echoclient df=
new Echoclient();
df.FormBorderStyle=FormBorderStyle.Fixed3D;
Application.Run(df);
}
public void InitializeComponent()
{
b1=
new Button();
b1.Location =
new System.Drawing.Point(170,20);
b1.Size =
new System.Drawing.Size (80,40);
b1.Text="Click Here";
b1.Click +=
new System.EventHandler(b1_Click);
b1.BackColor = System.Drawing.Color.Transparent ;
b1.ForeColor = System.Drawing.Color.Red ;
b1.BackgroundImage = Image.FromFile("back4.gif") ;
b1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
b1.Font =
new System.Drawing.Font("Microsoft Sans Serif", 8f,
System.Drawing.FontStyle.Bold);
t1=
new TextBox();
t1.Location =
new System.Drawing.Point(20,20);
t1.Size =
new System.Drawing.Size (100,100);
ta=
new TextBox();
ta.Multiline=
true;
ta.ScrollBars = ScrollBars.Vertical;
ta.AcceptsReturn =
true;
ta.AcceptsTab =
true;
ta.WordWrap =
true;
ta.Location =
new System.Drawing.Point(20,80);
this.SuspendLayout();
this.Text = "Socket Programming" ;
this.MaximizeBox = false;
this.BackgroundImage = Image.FromFile("back3.gif") ;
this.Name = "Form1";
this.Controls.Add(this.b1);
this.Controls.Add(this.t1);
this.Controls.Add(this.ta);
this.Closing+= new CancelEventHandler(form1_closing) ;
//connect to the "localhost" at the give port
//if you have some other server name then you can use that instead of "localhost"
try
{
myclient =
new TcpClient("localhost", 1234);
}
catch
{
Console.WriteLine("Failed to connect to server at {0}:999", "localhost");
return;
}
//get a Network stream from the server
networkStream = myclient.GetStream();
streamReader =
new StreamReader(networkStream);
streamWriter =
new StreamWriter(networkStream);
}
//User can enter a text in the textbox and on click of the button the message will be sent to the server..
//then the Client waits and receives the response from the server which is displayed in the textarea..
private void b1_Click(object sender, EventArgs e)
{
ta.Text="" ;
if(t1.Text=="")
{
MessageBox.Show("Please enter something in the textbox");
t1.Focus();
return ;
}
try
{
string s;
streamWriter.WriteLine(t1.Text);
Console.WriteLine("Sending Message");
streamWriter.Flush();
s= streamReader.ReadLine();
Console.WriteLine("Reading Message") ;
Console.WriteLine(s) ;
ta.Text=s;
}
catch(Exception ee)
{
Console.WriteLine("Exception reading from Server:"+ee .ToString());
}
}
public void form1_closing(object o , CancelEventArgs ec)
{
//close all streams...
streamReader.Close() ;
streamWriter.Close() ;
networkStream.Close();
}
}

Login to add your contents and source code to this article
share this article :
post comment
 

Hello... I'm really new to this socket programming, and I have this project to make. The project is an ATM System in vb.net but with the use of Socket Programming. I can already connect the Client and Server applications, especially the PIN CODE form. The only problem is, the Client ATM application has many window forms: withdraw, deposit, etc. How can I maintain the connection without making a new one in every form? I've been searching for answers in Google and unfortunately, I can't find anything yet. Any ideas?

Posted by dee asinero Mar 08, 2011

Very well my brother!

Posted by pedro perez Jul 17, 2009
Become a Sponsor
PREMIUM SPONSORS
  • The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
    Get 2 Months Free of ASP.NET Hosting for Only $4.95/month! Receive FREE MS SQL and MySQL Databases Including ASP.NET 4/3.5, MVC 3.0, Silverlight 4, Windows 2008/IIS 7.0 Plus FREE IIS 7 Modules. Host UNLIMITED ASP.NET Web Sites - Click Here!
6 Months Free & No Setup Fees ASP.NET Hosting!
Become a Sponsor