C# Socket

发布时间:2017-7-1 11:37:11编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"C# Socket ",主要涉及到C# Socket 方面的内容,对于C# Socket 感兴趣的同学可以参考一下。

-------------------------------------------------------------------------------------------------------------------------------------------

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

/// <summary>
/// 服务端
/// </summary>

namespace SocketServerTest
{
  class Program
  {
    private static byte[] result = new byte[1024];
    private static int myProt = 5209; //端口
    static Socket serverSocket;
    static void Main(string[] args)
    {
      //服务器IP地址
      IPAddress ip = IPAddress.Parse("127.0.0.1");
      serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      //serverSocket.Bind(new IPEndPoint(ip, myProt)); //绑定IP地址:端口 

      serverSocket.Bind(new IPEndPoint(IPAddress.Any, myProt)); //绑定IP地址:端口  (正常情况下,客户端和服务端不在一台机器上,所以使用IPAddress.Any就表示任何客户端都可以连接到该服务端)
      serverSocket.Listen(10); //设定最多10个排队连接请求
      Console.WriteLine("启动监听{0}成功", serverSocket.LocalEndPoint.ToString());
      Socket clientSocket = serverSocket.Accept();
      while (true) {
          Thread.Sleep(1000);
          SendMsg(clientSocket);
      }
    }

    /// <summary>
    /// 以每秒一次的频率发送数据给客户端
    /// </summary>
    /// <param name="clientSocket"></param>
    public static void SendMsg(Socket clientSocket)
    {
      try
      {
        clientSocket.Send(Encoding.ASCII.GetBytes(GetRandomData()));
      }
      catch {
        Console.WriteLine("服务器异常");
        return;
      }
    }

    /// <summary>
    /// 接收消息
    /// </summary>
    /// <param name="clientSocket"></param>
    private static void ReceiveMessage(object clientSocket)
    {
      Socket myClientSocket = (Socket)clientSocket;
      while (true)
      {
        try
        {
          //通过clientSocket接收数据
          int receiveNumber = myClientSocket.Receive(result);
          Console.WriteLine("接收客户端{0}消息{1}", myClientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));
        }
        catch (Exception ex)
        {
          Console.WriteLine(ex.Message);
          myClientSocket.Shutdown(SocketShutdown.Both);
          myClientSocket.Close();
          break;
        }
      }
    }

    /// <summary>
    /// 产生随机字符串
    /// </summary>
    /// <returns></returns>
    private static string GetRandomData()
    {
        Random ran = new Random();
        int x = ran.Next(50,200);
        int y = ran.Next(20,100);
        int z = 1000;
        int ID = ran.Next(1,30);
        string str = "ID:"+ID+"-x:"+x+"-y:"+y+"-z:"+z;
        return str;
    }

  }
}

---------------------------------------------------------------------------------------------------------

客户端

---------------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using System.Threading;
/// <summary>
/// 客户端
/// </summary>
namespace SocketTest1
{
  class Program
  {
    private static byte[] result = new byte[1024];
    static void Main(string[] args)
    {
      //设定服务器IP地址
      IPAddress ip = IPAddress.Parse("127.0.0.1");
      Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      try
      {
        clientSocket.Connect(new IPEndPoint(ip, 5209)); //配置服务器IP与端口
        Console.WriteLine("连接服务器成功");
      }
      catch
      {
        Console.WriteLine("连接服务器失败,请按回车键退出!");
        return;
      }
      //通过clientSocket接收数据
      while (true) {
            int receiveLength = clientSocket.Receive(result);
            Console.WriteLine("接收服务器消息:{0}", Encoding.ASCII.GetString(result, 0, receiveLength));
      }

      //通过 clientSocket 发送数据
      //for (int i = 0;i <10; i++)
      //{
      //  try
      //  {
      //    Thread.Sleep(1000);
      //    string sendMessage = "client send Message Hellp" + DateTime.Now;
      //    clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage));
      //    Console.WriteLine("向服务器发送消息:{0}" + sendMessage);
      //  }
      //  catch
      //  {
      //    clientSocket.Shutdown(SocketShutdown.Both);
      //    clientSocket.Close();
      //    break;
      //  }
      //}

      //Console.WriteLine("发送完毕,按回车键退出");
      //Console.ReadLine();
    }
  }
}


上一篇:医院里的CR、DR、CT、磁共振、B超都是什么?
下一篇:Webpack 2 视频教程 004 - Webpack 初体验

相关文章

关键词: C# Socket

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款