using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace Server
{
class Program
{
static void Main(string[] args)
{
TcpListener TcpDinleyicisi = new TcpListener(1234);
TcpDinleyicisi.Start();
Console.WriteLine("Sunucu baslatildi...");
//Soket baglantimizi yapiyoruz.Bunu TcpListener sinifinin AcceptSocket metodu ile yaptigimiza dikkat edin
Socket IstemciSoketi = TcpDinleyicisi.AcceptSocket();
// Baglantının olup olmadığını kontrol ediyoruz
if (!IstemciSoketi.Connected)
{
Console.WriteLine("Sunucu baslatilamiyor...") ;
}
else
{
//Sonsuz döngü sayesinde AgAkimini sürekli okuyoruz
while(true)
{
Console.WriteLine("Istemci baglantisi saglandi...");
//IstemciSoketi verilerini NetworkStream sinifi türünden nesneye aktariyoruz.
NetworkStream AgAkimi = new NetworkStream(IstemciSoketi);
//Soketteki bilgilerle islem yapabilmek için StreamReader ve StreamWriter siniflarini kullaniyoruz
StreamWriter AkimYazici = new StreamWriter(AgAkimi);
StreamReader AkimOkuyucu = new StreamReader(AgAkimi);
//StreamReader ile String veri tipine aktarma islemi önceden bir hata olursa bunu handle etmek gerek
try
{
string IstemciString = AkimOkuyucu.ReadLine();
Console.WriteLine("Gelen Bilgi:" + IstemciString);
//Istemciden gelen bilginin uzunlugu hesaplaniyor
int uzunluk = IstemciString.Length;
//AgAkimina, AkimYazını ile IstemciString inin uzunluğunu yazıyoruz
AkimYazici.WriteLine(uzunluk.ToString());
AkimYazici.Flush() ;
}
catch
{
Console.WriteLine("Sunucu kapatiliyor...");
return ;
}
} //endwhile
} //Edn else
IstemciSoketi.Close();
Console.WriteLine("Sunucu Kapatiliyor...");
}
}
}
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace Client
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public TcpClient Istemci;
private NetworkStream AgAkimi;
private StreamReader AkimOkuyucu;
private StreamWriter AkimYazici;
private void button1_Click(object sender, EventArgs e)
{
//Kullanıcı butona her tıkladığında textbox'ta yazı yoksa uyarı veriyoruz
//Sonra AkimYazici vasıtası ile AgAkımına veriyi gönderip sunucudan gelen
//cevabı AkimOkuyucu ile alıp Mesaj la kullanıcıya gösteriyoruz
//Tabi olası hatalara karşı, Sunucuya bağlanmada hata oluştu mesajı veriyoruz.
try
{
if (textBox1.Text=="")
{
MessageBox.Show("Lütfen bir yazi giriniz","Uyari");
textBox1.Focus();
return ;
}
string yazi;
AkimYazici.WriteLine(textBox1.Text);
AkimYazici.Flush();
yazi = AkimOkuyucu.ReadLine();
MessageBox.Show(yazi,"Sunucudan Mesaj var");
}
catch
{
MessageBox.Show("Sunucuya baglanmada hata oldu...");
}
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
Istemci = new TcpClient("localhost", 1234);
}
catch
{
Console.WriteLine("Baglanamadi");
return;
}
//Server programında yaptıklarımızı burda da yapıyoruz.
AgAkimi = Istemci.GetStream();
AkimOkuyucu = new StreamReader(AgAkimi);
AkimYazici = new StreamWriter(AgAkimi);
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
try
{
AkimYazici.Close();
AkimOkuyucu.Close();
AgAkimi.Close();
}
catch
{
MessageBox.Show("Düzgün kapatilamiyor");
}
}
}
}
using System.Net;
using System.Net.Sockets;
namespace SUNUCU2
{
class Program
{
static byte[] Buffer { get; set; }
static Socket soket;
static void Main(string[] args)
{
soket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
soket.Bind(new IPEndPoint(0,1234) );
soket.Listen(100);//
Socket accepted = soket.Accept();
Buffer = new byte [accepted.SendBufferSize];
int byteRead = accepted.Receive(Buffer);
byte [] formatted= new byte [byteRead];
for (int i = 0; i < byteRead; i++)
{
formatted[i] = Buffer[i];
}
string strData = Encoding.ASCII.GetString( formatted);
Console.Write(strData + "\r\n");
Console.Read();
soket.Close();
accepted.Close();
}
}
}
using System.Net;
using System.Net.Sockets;
namespace CLIENT2
{
class Program
{
static Socket soket;
static void Main(string[] args)
{
soket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"),1234);
try {
soket.Connect(localEndPoint); // socket.Connect("127.0.0.1",1234);
}
catch {
Console.Write("Unable to connect to remote end point \r\n");
Main(args);
}
Console.Clear();
Console.Write("Enter text:");
string text= Console.ReadLine();
byte[] data = Encoding.ASCII.GetBytes(text);
soket.Send(data);
Console.Write("Data sent!\r\n");
Console.Write("Press any key to continue...");
Console.Read();
soket.Close();
//ConsoleKeyInfo key = Console.ReadKey(true);
// if (key.Key == ConsoleKey.Escape) break;
}
}
}
SERVER http://csharp.net-informations.com/communications/csharp-client-socket.htm
using System;
using System.Net.Sockets;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
TcpListener serverSocket = new TcpListener(8888);
int requestCount = 0;
TcpClient clientSocket = default(TcpClient);
serverSocket.Start();
Console.WriteLine(" >> Server Started");
clientSocket = serverSocket.AcceptTcpClient();
Console.WriteLine(" >> Accept connection from client");
requestCount = 0;
while ((true))
{
try
{
requestCount = requestCount + 1;
NetworkStream networkStream = clientSocket.GetStream();
byte[] bytesFrom = new byte[10025];
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
string dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
Console.WriteLine(" >> Data from client - " + dataFromClient);
string serverResponse = "Server response " + Convert.ToString(requestCount);
Byte[] sendBytes = Encoding.ASCII.GetBytes(serverResponse);
networkStream.Write(sendBytes, 0, sendBytes.Length);
networkStream.Flush();
Console.WriteLine(" >> " + serverResponse);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
clientSocket.Close();
serverSocket.Stop();
Console.WriteLine(" >> exit");
Console.ReadLine();
}
}
}
Client
using System;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Text;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
msg("Client Started");
clientSocket.Connect("127.0.0.1", 8888);
label1.Text = "Client Socket Program - Server Connected ...";
}
private void button1_Click(object sender, EventArgs e)
{
NetworkStream serverStream = clientSocket.GetStream();
byte[] outStream = System.Text.Encoding.ASCII.GetBytes("Message from Client$");
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
byte[] inStream = new byte[10025];
serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
string returndata = System.Text.Encoding.ASCII.GetString(inStream);
msg("Data from Server : " + returndata);
}
public void msg(string mesg)
{
textBox1.Text = textBox1.Text + Environment.NewLine + " >> " + mesg;
}
}
}
Dostları ilə paylaş: |