سلام
این کد دارای دو بخش Client و Server است.
این کد بخش Server :
using System;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
namespace TCPSocketServer
{
/// <summary>
/// Summary description for TCPSockServer.
/// </summary>
public class Server : Form
{
//////////////////////////////////////////////////////////////////////////////
///Variables & Properties
//////////////////////////////////////////////////////////////////////////////
Button btnStartServer;
private StreamWriter serverStreamWriter;
private StreamReader serverStreamReader;
//////////////////////////////////////////////////////////////////////////////
///constructor
public Server()
{
//create StartServer button set its properties & event handlers
this.btnStartServer = new Button();
this.btnStartServer.Text = "Start Server";
this.btnStartServer.Click +=
new System.EventHandler(this.btnStartServer_Click& #41;;
//add controls to form
this.Controls.Add(this.btnStartServer);
}
//////////////////////////////////////////////////////////////////////////////
///Main Method
public static void Main(string[] args)
{
//creat n display windows form
Server tcpSockServer = new Server();
Application.Run(tcpSockServer);
}
//////////////////////////////////////////////////////////////////////////////
///Start Server
private bool StartServer()
{
//create server's tcp listener for incoming connection
TcpListener tcpServerListener = new TcpListener(4444);
tcpServerListener.Start(); //start server
Console.WriteLine("Server Started");
this.btnStartServer.Enabled = false;
//block tcplistener to accept incoming connection
Socket serverSocket = tcpServerListener.AcceptSocket();
try
{
if (serverSocket.Connected)
{
Console.WriteLine("Client connected");
//open network stream on accepted socket
NetworkStream serverSockStream =
new NetworkStream(serverSocket);
serverStreamWriter =
new StreamWriter(serverSockStream);
serverStreamReader =
new StreamReader(serverSockStream);
}
}
catch(Exception e)
{
Console.WriteLine(e.StackTrace);
return false;
}
return true;
}
//////////////////////////////////////////////////////////////////////////////
///Event handlers
//////////////////////////////////////////////////////////////////////////////
private void btnStartServer_Click(object sender,System.EventArgs e)
{
//start server
if (!StartServer())
Console.WriteLine("Unable to start server");
//sending n receiving msgs
while (true)
{
Console.WriteLine("CLIENT: "+serverStreamReader.ReadLine());
serverStreamWriter.WriteLine("Hi!");
serverStreamWriter.Flush();
}//while
}
}
}
این کد بخش Client است:
using System;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
namespace TCPSocketClient
{
/// <summary>
/// Summary description for Client.
/// </summary>
public class Client : Form
{
/////////////////////////////////////////////////////////////////////////////
///Variables & Properties
/////////////////////////////////////////////////////////////////////////////
private Button btnConnectToServer;
private Button btnSendMessage;
private StreamReader clientStreamReader;
private StreamWriter clientStreamWriter;
/////////////////////////////////////////////////////////////////////////////
///Constructor
public Client()
{
//create ConnectToServer button, set its properties & event handlers
this.btnConnectToServer = new Button();
this.btnConnectToServer.Text = "Connect";
this.btnConnectToServer.Click +=
new System.EventHandler(btnConnectToServer_Click&# 41;;
//create SendMessage button, set its properties & event handlers
this.btnSendMessage = new Button();
this.btnSendMessage.Text = "Send Message";
this.btnSendMessage.Top += 30;
this.btnSendMessage.Width += 20;
this.btnSendMessage.Click +=
new System.EventHandler(btnSendMessage_Click);
//add controls to windows form
this.Controls.Add(this.btnConnectToServer) ;
this.Controls.Add(this.btnSendMessage);
}
/////////////////////////////////////////////////////////////////////////////
///Main method
public static void Main(string[] args)
{
//create n display windows form
Client tcpSockClient = new Client();
Application.Run(tcpSockClient);
}
/////////////////////////////////////////////////////////////////////////////
///Connect to server
private bool ConnectToServer()
{
//connect to server at given port
try
{
TcpClient tcpClient = new TcpClient("localhost",4444);
Console.WriteLine("Connected to Server");
//get a network stream from server
NetworkStream clientSockStream = tcpClient.GetStream();
clientStreamReader = new StreamReader(clientSockStream);
clientStreamWriter = new StreamWriter(clientSockStream);
}
catch(Exception e)
{
Console.WriteLine(e.StackTrace);
return false;
}
return true;
}
/////////////////////////////////////////////////////////////////////////////
///Event Handlers
/////////////////////////////////////////////////////////////////////////////
private void btnConnectToServer_Click(object sender,System.EventArgs e)
{
//connect to server
if (!ConnectToServer())
Console.WriteLine("Unable to connect to server");
}
private void btnSendMessage_Click(object sender,System.EventArgs e)
{
try
{
//send message to server
clientStreamWriter.WriteLine("Hello!");
clientStreamWriter.Flush();
Console.WriteLine("SERVER: "+clientStreamReader.ReadLine());
}
catch(Exception se)
{
Console.WriteLine(se.StackTrace);
}
}
}
}