Borko Djurovic
Početnik
- Poruka
- 5
Pozdrav,
Pravim TCP\IP klijent i server za obicnu razmjenu tekstualnih poruka.
Tek sam poceo sa upotrebom System.Net.Sockets i System.Net namespace-a.
Skoro sam zavrsio sa radom ali nedostaje finalna realizacija (slanje poruke).
Projekat je radjen u WPF, .NET 6, VisualStudio 2022 Community Edition i nalazi se na GitHub-u. Ovo je link: Repozitorijum
U projektu postoje dvije glavne klase: AdmonteServer i AdmonteClient. sa sledecim sadrzajem:
AdmonteServer:
AdmonteClient:
Molim za pomoc.
Hvala!
Pravim TCP\IP klijent i server za obicnu razmjenu tekstualnih poruka.
Tek sam poceo sa upotrebom System.Net.Sockets i System.Net namespace-a.
Skoro sam zavrsio sa radom ali nedostaje finalna realizacija (slanje poruke).
Projekat je radjen u WPF, .NET 6, VisualStudio 2022 Community Edition i nalazi se na GitHub-u. Ovo je link: Repozitorijum
U projektu postoje dvije glavne klase: AdmonteServer i AdmonteClient. sa sledecim sadrzajem:
AdmonteServer:
C#:
using System;
using System.Net;
using System.Net.Sockets;
namespace Server
{
public class AdmonteServer
{
private readonly IPAddress? _hostAddress;
private readonly int _portNumber;
private readonly TcpListener _listener;
private Socket? _socket;
public AdmonteServer(string hostAddress, string portNumber)
{
if (!IPAddress.TryParse(hostAddress, out _hostAddress))
throw new ArgumentException("Given argument HostAddress is not valid.");
if(!Int32.TryParse(portNumber, out _portNumber))
throw new ArgumentException("Given argument PortNumber is not valid.");
this._listener = new TcpListener(_hostAddress, this._portNumber);
}
#region Events
public event EventHandler<AdmonteMessageEventArgs>? OnMessageReceived;
public event EventHandler<EventArgs>? OnStart;
public event EventHandler<EventArgs>? OnStop;
#endregion
public void Start()
{
Console.WriteLine("Starting ...");
this._listener.Start();
if (OnStart != null)
OnStart(this, new EventArgs());
}
public void Stop()
{
Console.WriteLine("Stopping ...");
this._listener.Stop();
if (OnStop != null)
OnStop(this, new EventArgs());
}
}
}
AdmonteClient:
Kod:
using System;
using System.Net.Sockets;
using System.Net;
namespace Client
{
public class AdmonteClient
{
private IPAddress? _hostAddress;
private int _portNumber;
private TcpClient _tcpClient;
private readonly Socket _socket;
private IPEndPoint? _endPoint;
public AdmonteClient()
{
_tcpClient = new TcpClient();
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
public void ConnectTo(string hostAddress, string portNumber)
{
if (!IPAddress.TryParse(hostAddress, out _hostAddress))
throw new ArgumentException("Given argument HostAddress is not valid.");
if (!Int32.TryParse(portNumber, out _portNumber))
throw new ArgumentException("Given argument PortNumber is not valid.");
this._endPoint = new IPEndPoint(_hostAddress, _portNumber);
//_tcpClient.Connect(_endPoint);
_socket.Connect(_endPoint);
if (ClientConnected != null)
ClientConnected(this, new EventArgs());
}
public void Disconnect()
{
_tcpClient.Close();
if(ClientDisconnected != null)
ClientDisconnected(this, new EventArgs());
}
public void SendMessage(string message)
{
this._socket.SendTo(System.Text.Encoding.ASCII.GetBytes(message), 0, _endPoint);
if (MessageSent != null)
MessageSent(this, new EventArgs());
}
#region Events
public event EventHandler<EventArgs>? MessageSent;
public event EventHandler<EventArgs>? ClientConnected;
public event EventHandler<EventArgs>? ClientDisconnected;
#endregion
}
}
Molim za pomoc.
Hvala!