C# Socket通信改进记录
1. Socket
- 使用原始Socket,Send和Recv方法 进行发送和消息获取。(另起后台线程 不停获取和发送)
-
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);
}
} }
-
- 使用Socket BeginSend 和BeginReceive 进行异步发送和消息获取。
-
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为空");
}
}
-
- 使用 SocketAsyncEventArgs 进行高效率 异步发送和消息获取。
-
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进行相互通信
- 前端Html5 WebSocket搭建
- Socket 接收和发送方法改进 支持 WebSocket。
其他:
- java对于 Socket的支持 ,及 ReadLine 造成的IO阻塞。
- 异常捕获,及废弃Socket处理
C# Socket通信改进记录的更多相关文章
- 一封给“X教授”的回信(讨论Socket通信)
转载:http://www.cnblogs.com/tianzhiliang/archive/2011/03/02/1969187.html 前几天"X教授"发Email与我讨论S ...
- Socket通信类
package com.imooc; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- Android之Socket通信、List加载更多、Spinner下拉列表
Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务 ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-下载配置
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- C# socket通信
最近在研究socket,今天看到很好的一篇关于socket通信的文章,故收藏了,慢慢琢磨. 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: 1.TCP/IP层次模型 当然这里 ...
- C#socket通信-----多线程
我在之前的socket通信的基础上做了一点改进,使用多线程来使用,程序更加简洁实用.不足之处请指教哦! 话不多说,之前的随笔也有介绍,直接上代码啦! 服务端socket(serverSocket): ...
- Python简易聊天工具-基于异步Socket通信
继续学习Python中,最近看书<Python基础教程>中的虚拟茶话会项目,觉得很有意思,自己敲了一遍,受益匪浅,同时记录一下. 主要用到异步socket服务客户端和服务器模块asynco ...
随机推荐
- 使用Visual Studio开发跨平台的iOS应用程序
[原文发表地址]Developing cross-platform iOS application using Visual Studio [原文发表时间]2015/6/4 C ++是一种流行的高级编 ...
- TIMEQUEST学习之黑金动力(二)
之一就是第一章,这是第二章.在开始之前,要对第一章内容说说我理解到的: (1)时序分析是节点对节点的分析.(2)这个latch edge是锁存上一个lunch edge输出的(满足建立关系的)值.(3 ...
- 一种js异步处理方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MIDL相关
根据MIDL的语义, 指针总被认为是指向单一元素而不是数组.因此以上方法中只有串中的第一个字符被封送.为此,MIDL引入了[string]特性来说明传递的是一个字符串 http://www.cnblo ...
- 无法安装 Microsoft Visual Studio 2010 Service Pack 1
解决办法: 32 位系统删除:HKEY_LOCAL_MACHINE\Software\Microsoft\VSTO Designtime Setup\ 64 位系统删除:HKEY_LOCAL_MACH ...
- webapi的几种过滤器
好久没有写博客了 今天就来聊聊asp.net webapi的过滤器们 过滤器主要有这么几种 AuthorizationFilterAttribute 权限验证 ActionFilterAttribut ...
- phpmailer邮件类
<?php/** * 邮件类 * Enter description here ... * @author df * Mail::getMail()->sendMail(); * */cl ...
- pom.xml配置指定仓库
<repositories> <repository> <id>central</id><--中央仓库--> <url>http ...
- while 循环和do while循环
while循环是先检测条件符合不符合,符合才执行循环体内容,不符合就跳过while循环. 就和一个房间有两个门,一个前门,一个后门,while循环是当你进入前门的时候有人会检查你的身份,只有身份符合条 ...
- postfix配置积累(不断的积累)
postfix 配置 1.mail_name 默认是Postfix.在收件人信头可以查看,如果不想让别人知道你是用postfix发的,则可以改成其它名字,如:postconf -e mail_name ...