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
comments
COMMENT USING
PREMIUM SPONSORS
Nevron Software is a global leader in component based data visualization technology for a diverse range of Microsoft centric platforms. Nevron Data Visualization components are used by many companies, educational and government organizations around the world.
HTML 5 + JQUERY CONTROLS
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Nevron Diagram