1. Socket

  1. 使用原始Socket,Send和Recv方法 进行发送和消息获取。(另起后台线程 不停获取和发送)
    1.   

       public void RecvMsg()
      {
      //receive message
      bool isListen = true; while (isListen)
      {
      string recStr = "";
      byte[] recBytes = new byte[];
      int bytes = clientSocket.Receive(recBytes, recBytes.Length, );
      recStr += Encoding.UTF8.GetString(recBytes, , bytes); if (!String.IsNullOrWhiteSpace(recStr))
      {
      if (recStr.EndsWith(Environment.NewLine))
      {
      recStr = recStr.Substring(, recStr.Length - Environment.NewLine.Length);
      }
      AppendContet(recStr);
      }
      } }
  2. 使用Socket BeginSend 和BeginReceive 进行异步发送和消息获取。
    1.   

      private void button1_Click(object sender, EventArgs e)
      {
      //send message
      string sendStr = txtMsg.Text;
      byte[] sendBytes = Encoding.UTF8.GetBytes(sendStr);
      clientSocket.BeginSend(sendBytes, , sendBytes.Length, SocketFlags.None, new AsyncCallback(Send_Complete), clientSocket);
      } private void Send_Complete(IAsyncResult e)
      {
      if (e.IsCompleted)
      {
      AppendDebugMsg("异步发送已完成");
      }
      else
      {
      AppendDebugMsg("异步发送失败");
      }
      var socket = e.AsyncState as Socket;
      if (socket == null)
      {
      AppendDebugMsg("发送异步Socket为空");
      }
      }
  3. 使用 SocketAsyncEventArgs 进行高效率 异步发送和消息获取。
    1.   

       public void SendAync(byte[] sendBytes)
      {
      SocketAsyncEventArgs sendSocketArgs = GlobalConfig.SendPool.Pop();
      sendSocketArgs.UserToken = this;
      sendSocketArgs.SetBuffer(sendBytes, , sendBytes.Length); this.ClientSocket.SendAsync(sendSocketArgs);
      }

2. Socket 与 WebSocket进行相互通信

  1. 前端Html5  WebSocket搭建
  2. Socket 接收和发送方法改进 支持 WebSocket。

其他:

  1. java对于 Socket的支持 ,及 ReadLine 造成的IO阻塞。
  2. 异常捕获,及废弃Socket处理

C# Socket通信改进记录的更多相关文章

  1. 一封给“X教授”的回信(讨论Socket通信)

    转载:http://www.cnblogs.com/tianzhiliang/archive/2011/03/02/1969187.html 前几天"X教授"发Email与我讨论S ...

  2. Socket通信类

    package com.imooc; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...

  3. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  4. Android之Socket通信、List加载更多、Spinner下拉列表

    Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务 ...

  5. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  6. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-下载配置

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  7. C# socket通信

    最近在研究socket,今天看到很好的一篇关于socket通信的文章,故收藏了,慢慢琢磨. 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: 1.TCP/IP层次模型 当然这里 ...

  8. C#socket通信-----多线程

    我在之前的socket通信的基础上做了一点改进,使用多线程来使用,程序更加简洁实用.不足之处请指教哦! 话不多说,之前的随笔也有介绍,直接上代码啦! 服务端socket(serverSocket): ...

  9. Python简易聊天工具-基于异步Socket通信

    继续学习Python中,最近看书<Python基础教程>中的虚拟茶话会项目,觉得很有意思,自己敲了一遍,受益匪浅,同时记录一下. 主要用到异步socket服务客户端和服务器模块asynco ...

随机推荐

  1. file_put_contents(): supplied resource is not a valid stream resource

    在项目开发的过程中 自己想把输出和一些想要内容输出到日志文件中,便于查看 但是在输入的过程中报了这样一个错误: file_put_contents(): supplied resource is no ...

  2. php单链表实现

    php单链表实现 <?php //单链表 class Hero{ public $no; public $name; public $nickname; public $next=null; f ...

  3. 【转】Jmeter MySQL数据库性能测试

    1.首先准备M一SQL数据,新建一个数据库及测试用的表,插入1条数据 2.打开Jmeter,新建线程组,设置多少用户,循环几次随意 3.在线程组下新增JDBC配置元件,通过配置使得Jmeter能够连上 ...

  4. 【转】配置Jmeter的自定义参数

    配置Jmeter的自定义参数 User Defined Variables 在这个控件中,定义你所需要的参数,如 在对应的需要使用参数的位置,使用${host}替代. 应用场景: 当测试环境变化时,我 ...

  5. Java-Maven-Runoob:Maven 快照(SNAPSHOT)

    ylbtech-Java-Maven-Runoob:Maven 快照(SNAPSHOT) 1.返回顶部 1. Maven 快照(SNAPSHOT) 一个大型的软件应用通常包含多个模块,并且通常的场景是 ...

  6. 1112 Stucked Keyboard

    题意:坏掉的键若被按下,总是重复打出k次.比如,k为3,打出的序列如下—— thiiis iiisss a teeeeeest 坏掉的键是i和e,虽然iiisss中s也出现了3次,但它不是坏掉的键,因 ...

  7. C/S模式客户端连接服务器连接不上的问题

    C/S模式客户端连接服务器连接不上的问题 1.服务器电脑防火墙关闭 2.服务器端SQL SERVER2008R: 配置工具--SQL SERVER配置管理器 MSSQLSERVER协议.客户端协议(S ...

  8. IDEA实用的第三方插件和工具介绍设置

    一:grep console grep-console插件可以让idea显示多颜色调试日志,使Log4j配置输出的不同级别error warn info debug fatal显示不同颜色 开发起来区 ...

  9. 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)转

    vs2010的mfc项目中编译c语言出现错误: "...预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)" 解决方法: 建工程时 建立空项目  ...

  10. SkyBox

    [SkyBox] Skyboxes 本质是一个Material,这个Meterial的shader必须设置为ShaderFX/Skybox. SkyBox可以被绑定到摄像机或设置一个全局的SkyBox ...