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
Team Foundation Server Hosting
Become a Sponsor
PREMIUM SPONSORS
  • ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
    Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Nevron Gauge for SharePoint
Become a Sponsor