服务端

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

namespace SocketServer
{
  class Program
  {
    private static byte[] result = new byte[1024];
    private static int myProt = 8885; //端口
    static Socket serverSocket;
    static void Main(string[] args)
    {
      //服务器IP地址
      IPAddress ip = IPAddress.Parse("127.0.0.1"); //这里填0.0.0.0
      serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      serverSocket.Bind(new IPEndPoint(ip, myProt)); //绑定IP地址:端口
      serverSocket.Listen(10); //设定最多10个排队连接请求
      Console.WriteLine("启动监听{0}成功", serverSocket.LocalEndPoint.ToString());
      //通过Clientsoket发送数据
      Thread myThread = new Thread(ListenClientConnect);
      myThread.Start();
      Console.ReadLine();
    }

    /// <summary>
    /// 监听客户端连接
    /// </summary>
    private static void ListenClientConnect()
    {
      while (true)
      {
        Socket clientSocket = serverSocket.Accept();
        clientSocket.Send(Encoding.ASCII.GetBytes("Server Say Hello"));
        Thread receiveThread = new Thread(ReceiveMessage);
        receiveThread.Start(clientSocket);
      }
    }

    /// <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;
        }
      }
    }    
  }
}

客户端

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

namespace SocketClient
{
  class Program
  {
    private static byte[] result = new byte[1024];
    static void Main(string[] args)
    {
      //设定服务器IP地址
      IPAddress ip = IPAddress.Parse("123.56.163.2");
      Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      try
      {
        clientSocket.Connect(new IPEndPoint(ip, 11000)); //配置服务器IP与端口
        Console.WriteLine("连接服务器成功");
      }
      catch(Exception ex)
      {
        Console.WriteLine(ex.Message);
        Console.WriteLine("连接服务器失败,请按回车键退出!");
        Console.Read();
        return;
      }

      //通过clientSocket接收数据
      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); //等待1秒钟
          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();
    }
  }
}

c# 实现简单的socket通信的更多相关文章

  1. php简单实现socket通信

    socket通信的原理在这里就不说了,它的用途还是比较广泛的,我们可以使用socket来做一个API接口出来,也可以使用socket来实现两个程序之间的通信,我们来研究一下在php里面如何实现sock ...

  2. Linux下简单的socket通信实例

    Linux下简单的socket通信实例 If you spend too much time thinking about a thing, you’ll never get it done. —Br ...

  3. Android简单实现Socket通信,client连接server后,server向client发送文字数据

    案例实现的是简单的Socket通信,当client(Androidclient)连接到指定server以后,server向client发送一句话文字信息(你能够拓展其他的了) 先看一下服务端程序的实现 ...

  4. 简单的Socket通信

    Socket简介 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 服务端步骤: • socket:创建服务器socket ...

  5. Day 6-2简单的socket通信

    什么是socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...

  6. Java实现简单的socket通信

    今天学习了一下java如何实现socket通信,感觉难点反而是在io上,因为java对socket封装已经很完善了. 今天代码花了整个晚上调试,主要原因是io的flush问题和命令行下如何运行具有pa ...

  7. C#版 Socket编程(最简单的Socket通信功能)

    示例程序是同步套接字程序,功能很简单,只是客户端发给服务器一条信息,服务器向客户端返回一条信息:这里只是一个简单的示例,是一个最基本的socket编程流程,在接下来的文章中,会依次记录套接字的同步和异 ...

  8. Java 实现简单的 Socket 通信

    Java socket 封装了传输层的实现细节,开发人员可以基于 socket 实现应用层.本文介绍了 Java socket 简单用法. 1. 传输层协议 传输层包含了两种协议,分别是 TCP (T ...

  9. 简单的Socket通信(简单的在线聊天)---winform

    注:本博客适合刚开始学习winform程序的初学者,大牛请绕道(跪求大牛指导文中不足) .....10w字废话自动省略,直接开始正题. 首先从最基本的建立winform开始(本项目用的Vs2017) ...

随机推荐

  1. CentOS 6.5 安全加固及性能优化 (转)

    通过修改CentOS 6.5 的系统默认设置,对系统进行安全加固,进行系统的性能优化. 环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Centos-6.5- ...

  2. 删除mysql binlog日志

    查看:mysql> show binary logs; 删除 mysql-bin.000200 之前binlog日志:mysql> purge binary logs to 'mysql- ...

  3. aspnet webapi 跨域请求 405错误

    跨域,请求按要求配置完毕之后,options预请求老是报错.原因是webapi 默认的web.config有配置 <handlers> <remove name="Exte ...

  4. iPhone6/6 Plus兩款大屏智能機

    蘋果終於順應時代潮流,於今年推出了iPhone6/6 Plus兩款大屏智能機.但很快就有人開始懷念老款iPhone的“一手掌控”,畢竟不是所有人都有一雙大手.不過近期就有傳言稱,蘋果將於明年重新推出一 ...

  5. 让IE6/IE7/IE8浏览器支持CSS3属性

    让IE6/IE7/IE8浏览器支持CSS3属性 一.下载 您可以狠狠地点击这里:ie-css3.htc,这个玩意儿是让IE浏览器支持CSS3表现的关键东东. 二.上面的是什么东西 首先说说.htc文件 ...

  6. Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)的用法

      Android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() .根据首字母对应VERBOSE,DEBUG,INFO, ...

  7. 事务使用中如何避免误用分布式事务(System.Transactions.TransactionScope)

    1:本地事务DbTransaction和分布式事务TransactionScope的区别: 1.1:System.Data.Common.DbTransaction: 本地事务:这个没什么好说了,就是 ...

  8. CYQ.Data 批量添加数据性能测试(每秒千、万)

    今天有网友火晋地同学进了CYQ.Data官方群了,他正在折腾了一个各大ORM性能测试的比较的软件,如下图 折腾的种类也不少: 感觉这软件折腾的不错~~~值的期待~~~ 另外,他指出CYQ.Data 在 ...

  9. Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用

    一.高可用的Session服务器场景简介 1.1 应用服务器的无状态特性 应用层服务器(这里一般指Web服务器)处理网站应用的业务逻辑,应用的一个最显著的特点是:应用的无状态性. PS:提到无状态特性 ...

  10. 我的Git手册

    本文肯定不是Git的最佳的教程,它只是本人的Git操作手册,我将从一些实际问题出发,让熟悉SVN用户顺利过度到Git来(当然包括我自己了),其中会加入一些个人感受或看法,相信会对大家有些启发.另外,全 ...