Giriş
Şu satırı dahil ederiz.
Bu sınıf çok alt seviye kaldığı için istemci olarak UdpClient, TcpClient sunucu olarak ta
TcpListener tercih edilebilir.
Constructor - AddressFamily + SocketType + ProtocolType
Örnek
TCP için şöyle yaparız.
UDP için şöyle yaparız.
Şöyle yaparız.
Okumak için kaç byte'ın hazır olduğunu belirtir. Şöyle yaparız.
Metodu şöyle çağırırız.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Bu metod exception atar.
Şöyle yaparız.
Şöyle yaparız.
Ne olduğunu anlamadım.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Açıklaması şöyle.
Şöyle yaparız.
Şöyle yaparız.
Sunucu socket'lerde kullanılır.
UDP socketlerde kullanılır.
Şöyle yaparız.
Şöyle yaparız.
Şu satırı dahil ederiz.
using System.Net.Sockets;
Socket sınıfı TCP/UDP istemci veya TCP/UDP sunucu işlemleri için kullanılabilir.Bu sınıf çok alt seviye kaldığı için istemci olarak UdpClient, TcpClient sunucu olarak ta
TcpListener tercih edilebilir.
Constructor - AddressFamily + SocketType + ProtocolType
Örnek
TCP için şöyle yaparız.
Socket serverSocket =
new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(IPAddress.Any, PORT_NO));
serverSocket.Listen(4);
ÖrnekUDP için şöyle yaparız.
new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
Accept metoduŞöyle yaparız.
Socket socketClient = serverSocket.Accept();
Available AlanıOkumak için kaç byte'ın hazır olduğunu belirtir. Şöyle yaparız.
if (socket.Available > 0) {...}
BeginAccept metoduMetodu şöyle çağırırız.
serverSocket.BeginAccept(onAccept, serverSocket);
Metoda verilen callback içinde eğer listener socket nesnesi varsa kısaca şöyle yaparız.void onAccept(IAsyncResult ar){
Socket handler = listener.EndAccept(ar);
IPEndPoint ipEndPoint = handler.RemoteEndPoint as IPEndPoint;
...
}
Eğer yoksa uzun hali şöylevoid onAccept(IAsyncResult ar)
{
try
{
Socket handler = ((Socket)ar.AsyncState).EndAccept(ar);
...
}
catch
{
...
}
finally
{
listener.BeginAccept(onAccept, serverSocket);
}
}
BeginReceive metoduŞöyle yaparız.
socket.BeginReceive(buffer, 0, 1024, SocketFlags.None,
new AsyncCallback(onReceive
), socket);
Callback şöyledir.void onReceive(IAsyncResult ar)
{
int receive = socket.EndReceive(ar);
if (receive > 0)
{...}
}
BeginSend metoduŞöyle yaparız.
byte[] packet = ...;
socket.BeginSend(packet, 0, packet.Length, 0, sentData, null);
Callback şöyledir.void sentData(IAsyncResult ar)
{
try
{
socket.EndSend(iAr);
}
catch
{
...
}
}
Close metoduŞöyle yaparız.
socket.Close();
Connect metoduBu metod exception atar.
try
{
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 100);
socket.Connect(remoteEndPoint);
}
catch (SocketException)
{
...
}
TCP istemci socketinde şöyle yaparız.int port = 9090;
IPHostEntry ipHostInfo = Dns.GetHostEntry("MyHostName");
IPAddress ipAddress = ipHostInfo.AddressList[0];
//End point of the host where the socket will be connected
IPEndPoint remoteEndPoint = new IPEndPoint(ipAddress, port);
// Create a clientSocket that connects to host
Socket socket = new Socket(...);
socket.Connect(remoteEndPoint);
Connected AlanıŞöyle yaparız.
if (socket.Connected){...}
Disconnect metoduŞöyle yaparız.
socket.Disconnect(true);
ExclusiveAddressUse AlanıNe olduğunu anlamadım.
socket.ExclusiveAddressUse = false;
Listen metoduŞöyle yaparız.
socketServer.Listen(1);
NoDelay AlanıŞöyle yaparız.
bool disableNagleAlgorithm = true;socket.NoDelay = disableNagleAlgorithm;
Poll metoduŞöyle yaparız.
if (socket.Poll(1, SelectMode.SelectRead)) {...}
Receive metoduÖrnek
Şöyle yaparız.
byte[] buffer = new byte[1024];
int result = socketClient.Receive(buffer);
ÖrnekŞöyle yaparız.
byte[] responseByte = new byte[1024];
int result = socket.Receive(responseByte, client.Available, SocketFlags.None);
SafeHandle AlanıAçıklaması şöyle.
You should use a SafeHandle when you are directly managing an unmanaged resource.Örnek
With Socket, there is an underlying unmanaged resource, but that's handled by the Socket class.
Şöyle yaparız.
Socket socket = ...;
SafeSocketHandle _handle = socket.SafeHandle;
Send metoduŞöyle yaparız.
byte[] data = ...;
socket.Send(data);
SetSocketOption - ReuseAddressSunucu socket'lerde kullanılır.
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.ReuseAddress, true);
SetSocketOption - Multicast Grubuna GirmekUDP socketlerde kullanılır.
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership,
new MulticastOption("MCAST_IP", "LOCAL_IP"));
SetSocketOption - SendTimeoutŞöyle yaparız.
socket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.SendTimeout,200);
Shutdown metodu
Şöyle yaparız.
socket.Shutdown(SocketShutdown.Both);
Hiç yorum yok:
Yorum Gönder