PDA

View Full Version : برنامه نویسی شبکه با C#.Net



marzban
یک شنبه 15 آذر 1383, 14:31 عصر
با سلام
می خواهم که یک متن را از داخل یک سرور برای مثال با آدرس 192.168.0.1 به یک کلاینت به آدرس 192.168.0.2 بفرستم با پورت فرضی 8080 ،چگونه باید عمل کنم.
با تشکر

Delphi-Clinic
دوشنبه 16 آذر 1383, 12:30 عصر
سلام

این کد دارای دو بخش 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);

//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);
//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);
}
}
}
}