现在的位置: 首页 > 综合 > 正文

通过控制台实现 socket 的简单的例子

2012年08月09日 ⁄ 综合 ⁄ 共 1259字 ⁄ 字号 评论关闭

首先定义一个服务器端和一个客户端,同时引用命名空间:using System.Net; 和 using System.Net.Sockets;

(还有要清楚一点:socket 是基于TCP 连接的,本身有通道,使用的时候只是new 一个就可以了)

然后先实现服务器端:

主要代码:

static  void Main(string[] args)

{

  Console.WriteLine("服务器");

  //new一个通道来实现客户端和服务器端的通信

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

  //创建一个侦听点

  IPEndPoint iep = new IPEndPoint(IPAdress.Any,20000);

  //绑定到通道上

  s.Bind(iep);

  //监听

  s.Listen(6);//允许挂起的数量,不能超过10

  //开始处理

  Socket worker = s.Accept();

  try

  {

    byte[] buf = new byte[1024];

    int count = worker.Receive(buf);

    string context = Encoding.GetEncoding("gb2312").GetString(buf,0,count);

    Console.WriteLine(context);

    worker.Send(Encoding.GetEncoding("gb2312").GetBytes("收到"));

  }

  catch

  {

    throw;

  }

  Console.Read();

}

 

实现客户端:

主要代码:

static void Main(string[] args)

{

  Console.WriteLine("客户端");

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

  IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"),20000);

  //连接服务器

  s.Connect(iep);

  //发送信息

  string context ="Hello World!";

  s.Send(Encoding.GetEncoding("gb2312").GetByte(context));

 

  try

  {

    byte[] buf = new byte[1024];

    int count = s.Receive(buf);

    string aa = Encoding.GetEncoding("gb2312").GetString(buf,0,count);

    Console.WriteLine(aa);

  }

  catch

  {}

  Console.Read();

}

抱歉!评论已关闭.