Csharp/C Sharp/Network/Socket Connection

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Creating Socket Connections

<source lang="csharp"> /*

* C# Programmers Pocket Consultant
* Author: Gregory S. MacBeth
* Email: gmacbeth@comporium.net
* Create Date: June 27, 2003
* Last Modified Date:
* Version: 1
*/

using System; using System.Net; using System.Net.Sockets; using System.Text;

namespace Client.Chapter_14___Networking_and_WWW {

 public class CreatingSocketConnections
 {
   
   [STAThread]
   static void Main(string[] args)
   {
     TcpClient MyClient = new TcpClient();
     MyClient.Connect("http://www.nfex.ru", 10000);
     NetworkStream MyNetStream = MyClient.GetStream();
       
     if(MyNetStream.CanWrite && MyNetStream.CanRead)
     {
       // Does a simple write.
     Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there");
     MyNetStream.Write(sendBytes, 0, sendBytes.Length);
     
       // Reads the NetworkStream into a byte buffer.
     byte[] bytes = new byte[MyClient.ReceiveBufferSize];
     MyNetStream.Read(bytes, 0, (int) MyClient.ReceiveBufferSize);
 
     // Returns the data received from the host to the console.
     string returndata = Encoding.ASCII.GetString(bytes);
     Console.WriteLine("This is what the host returned to you: " + returndata);
     }
     else if (!MyNetStream.CanRead)
     {
       Console.WriteLine("You can not write data to this stream");
       MyClient.Close();
     }
     else if (!MyNetStream.CanWrite)
     {             
       Console.WriteLine("You can not read data from this stream");
       MyClient.Close();
 }  }  }

}

      </source>


Multi Receive

<source lang="csharp"> /* C# Network Programming by Richard Blum Publisher: Sybex ISBN: 0782141765

  • /

using System; using System.Net; using System.Net.Sockets; using System.Text; public class MultiRecv {

  public static void Main()
  {
     Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
     Console.WriteLine("Ready to receive...");
     IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);
     EndPoint ep = (EndPoint)iep;
     sock.Bind(iep);
     sock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership,
           new MulticastOption(IPAddress.Parse("224.100.0.1")));
     byte[] data = new byte[1024];
     int recv = sock.ReceiveFrom(data, ref ep);
     string stringData = Encoding.ASCII.GetString(data, 0, recv);
     Console.WriteLine("received: {0}  from: {1}", stringData, ep.ToString());
     sock.Close();
  }

}

      </source>


Multi Send

<source lang="csharp"> using System; using System.Net; using System.Net.Sockets; using System.Text; public class MultiSend {

  public static void Main()
  {
     Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
     IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.100.0.1"), 9050);
     
     byte[] data = Encoding.ASCII.GetBytes("This is a test message");
     server.SendTo(data, iep);
     server.Close();
  }

}

      </source>


New Multi Send

<source lang="csharp"> using System; using System.Net; using System.Net.Sockets; using System.Text; public class NewMultiSend {

  public static void Main()
  {
     Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
     IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9051);
     IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("224.100.0.1"), 9050);
     server.Bind(iep);
     
     byte[] data = Encoding.ASCII.GetBytes("This is a test message");
     server.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("224.100.0.1")));
     server.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 50);
     server.SendTo(data, iep2);
     server.Close();
  }

}

      </source>


new Socket

<source lang="csharp"> using System; using System.Net; using System.Net.Sockets; class SockProp {

   public static void Main() {
       IPAddress ia = IPAddress.Parse("127.0.0.1");
       IPEndPoint ie = new IPEndPoint(ia, 8000);
       Socket test = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
       Console.WriteLine(test.AddressFamily);
       Console.WriteLine(test.SocketType);
       Console.WriteLine(test.ProtocolType);
       Console.WriteLine(test.Blocking);
       test.Blocking = false;
       Console.WriteLine(test.Blocking);
       Console.WriteLine(test.Connected);
       test.Bind(ie);
       IPEndPoint iep = (IPEndPoint)test.LocalEndPoint;
       Console.WriteLine(iep.ToString());
       test.Close();
   }

}

</source>


Socket Connect, Send

<source lang="csharp">

using System; using System.Net; using System.Net.Sockets; using System.Text; class SocketExcept {

   public static void Main() {
       IPAddress host = IPAddress.Parse("192.168.1.1");
       IPEndPoint hostep = new IPEndPoint(host, 8000);
       Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
       try {
           sock.Connect(hostep);
       } catch (SocketException e) {
           Console.WriteLine("Problem connecting to host");
           Console.WriteLine(e.ToString());
           sock.Close();
           return;
       }
       try {
           sock.Send(Encoding.ASCII.GetBytes("testing"));
       } catch (SocketException e) {
           Console.WriteLine("Problem sending data");
           Console.WriteLine(e.ToString());
           sock.Close();
           return;
       }
       sock.Close();
   }

}

</source>


Socket Exception

<source lang="csharp"> using System; using System.Net; using System.Net.Sockets; using System.Text; public class SocketExcept {

  public static void Main()
  {
     IPAddress host = IPAddress.Parse("192.168.1.1");
     IPEndPoint hostep = new IPEndPoint(host, 8000);
     Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
     try
     {
        sock.Connect(hostep);
     } catch (SocketException e) {
        Console.WriteLine("Problem connecting to host");
        Console.WriteLine(e.ToString());
        sock.Close();
        return;
     }
     try  {
        sock.Send(Encoding.ASCII.GetBytes("testing"));
     } catch (SocketException e) {
         Console.WriteLine("Problem sending data");
         Console.WriteLine( e.ToString());
         sock.Close();
         return;
     }
     sock.Close();
  }

}

      </source>


Socket property

<source lang="csharp"> using System; using System.Net; using System.Net.Sockets; public class SockProp {

  public static void Main()
  {
     IPAddress ia = IPAddress.Parse("127.0.0.1");
     IPEndPoint ie = new IPEndPoint(ia, 8000);
     Socket test = new Socket(AddressFamily.InterNetwork,
                  SocketType.Stream, ProtocolType.Tcp);
     Console.WriteLine("AddressFamily: {0}",test.AddressFamily);
     Console.WriteLine("SocketType: {0}",test.SocketType);
     Console.WriteLine("ProtocolType: {0}",test.ProtocolType);
     Console.WriteLine("Blocking: {0}", test.Blocking);
     test.Blocking = false;
     Console.WriteLine("new Blocking: {0}",test.Blocking);
     Console.WriteLine("Connected: {0}", test.Connected);
     test.Bind(ie);
     IPEndPoint iep = (IPEndPoint)test.LocalEndPoint;
     Console.WriteLine("Local EndPoint: {0}",iep.ToString());
     test.Close();
  }

}

      </source>


Thread and socket

<source lang="csharp"> using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; public class Advertise {

  public static void Main()
  {
     Advertise server = new Advertise();
  }
  public Advertise()
  {
     Thread advert = new Thread(new ThreadStart(sendPackets));
     advert.IsBackground = true;
     advert.Start();
     Console.Write("Press Enter to stop");
     string data = Console.ReadLine();
  }
  void sendPackets()
  {
     Socket sock = new Socket(AddressFamily.InterNetwork,
                     SocketType.Dgram, ProtocolType.Udp);
     sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
     IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 9050);
     string hostname = Dns.GetHostName();
     byte[] data = Encoding.ASCII.GetBytes(hostname);
     while (true)
     {
        sock.SendTo(data, iep);
        Thread.Sleep(60000);
     }
  }

}

      </source>