C# 套接字2

来源:互联网 发布:网络无线 编辑:程序博客网 时间:2024/05/16 19:04
 
下面的程序是一个简单的Socket通讯实例,clientserver发送一段测试字符串,server接收并显示出来,给予client成功相应。

//client

using System;

using System.Text;

using System.IO;

using System.Net;

using System.Net.Sockets;

namespace socketsample

{

 class Class1

 {

  static void Main()

  {

   try

   {

    int port = 2000;

    string host = "127.0.0.1";

    IPAddress ip = IPAddress.Parse(host);

    IPEndPoint ipe = new IPEndPoint(ip, port);

    Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    c.Connect(ipe);

    string sendStr = "hello!This is a socket test";

    byte[] bs = Encoding.ASCII.GetBytes(sendStr);

    c.Send(bs, bs.Length, 0);

    string recvStr = "";

    byte[] recvBytes = new byte[1024];

    int bytes;

    bytes = c.Receive(recvBytes, recvBytes.Length, 0);

    recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);

    Console.WriteLine(recvStr);

    c.Close();

   }

   catch (ArgumentNullException e)

   {

    Console.WriteLine("ArgumentNullException: {0}", e);

   }

   catch (SocketException e)

   {

    Console.WriteLine("SocketException: {0}", e);

   }

   Console.ReadLine();

  }

 }

}

//server

using System;

using System.Text;

using System.IO;

using System.Net;

using System.Net.Sockets;

namespace Project1

{

 class Class2

 {

  static void Main()

  {

   try

   {

    int port = 2000;

    string host = "127.0.0.1";

    IPAddress ip = IPAddress.Parse(host);

    IPEndPoint ipe = new IPEndPoint(ip, port);

    Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    s.Bind(ipe);

    s.Listen(0);

    Socket temp = s.Accept();

    string recvStr = "";

    byte[] recvBytes = new byte[1024];

    int bytes;

    bytes = temp.Receive(recvBytes, recvBytes.Length, 0);

    recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);

    Console.WriteLine(recvStr);

    string sendStr = "Ok!Sucess!";

    byte[] bs = Encoding.ASCII.GetBytes(sendStr);

    temp.Send(bs, bs.Length, 0);

    temp.Shutdown(SocketShutdown.Both);

    temp.Close();

    s.Shutdown(SocketShutdown.Both);

    s.Close();

   }

   catch (ArgumentNullException e)

   {

    Console.WriteLine("ArgumentNullException: {0}", e);

   }

   catch (SocketException e)

   {

    Console.WriteLine("SocketException: {0}", e);

   }

   Console.ReadLine();

  }

 }

}