* HP-Socket 官方网站:http://www.jessma.org
* HP-Socket 项目主页:http://www.oschina.net/p/hp-socket
* HP-Socket 开发文档:http://www.oschina.net/p/hp-socket/doc

HP-Socket 源代码下载地址:https://github.com/ldcsaa/HP-Socket

自动处理了底层通信的很多东西封装的很好,使用方便 ,提供了丰富的事件支持

//服务端

//显示消息
delegate void ShowMsg(int connid, string msg);

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

HPSocketCS.TcpServer tcpServer = new HPSocketCS.TcpServer()
{
IpAddress = "192.168.3.61",
Port = 8858
};

private void Form1_Load(object sender, EventArgs e)
{
tcpServer.OnAccept += httpServer_OnAccept;
tcpServer.OnReceive += httpServer_OnReceive;
}

//启动
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text += tcpServer.IpAddress + ":" + tcpServer.Port + " 开始监听:\n";
tcpServer.Start();
}

/// <summary>
/// 监听到连接
/// </summary>
/// <param name="connId"></param>
/// <param name="pClient"></param>
/// <returns></returns>
public HandleResult httpServer_OnAccept(IntPtr connId, IntPtr pClient)
{
ShowMsg showMsg = new ShowMsg((connid, msg) => { textBox1.Text += string.Format("客户端{0}:{1}\n", connid, msg); });
this.Invoke(showMsg, new object[] { connId.ToInt32(), "我上线了..." });
return HandleResult.Ok;
}

/// <summary>
///
/// </summary>
/// <param name="connId"></param>
/// <param name="bytes"></param>
/// <returns></returns>
public HandleResult httpServer_OnReceive(IntPtr connId, byte[] bytes)
{
ShowMsg showMsg = new ShowMsg((connid, msg) => { textBox1.Text += string.Format("客户端{0}说:{1}\n", connid, msg); });
this.Invoke(showMsg, new object[] { connId.ToInt32(), Encoding.Default.GetString(bytes) });
return HandleResult.Ok;
}

}

//客户端

public partial class Form1 : Form
{
HPSocketCS.TcpClient tcpClient;
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
tcpClient = new HPSocketCS.TcpClient();
bool connected = tcpClient.Connect("192.168.3.61", 8858);
if (connected)
{
textBox1.Text += (tcpClient.ConnectionId + ":已经连接");
}
}

private void button1_Click(object sender, EventArgs e)
{
string msg = textBox2.Text.Trim();
var bytes=Encoding.Default.GetBytes(msg);
bool sended = tcpClient.Send(bytes, 0, bytes.Length);
if (sended)
{
textBox1.Text += (tcpClient.ConnectionId + ":" + msg);
textBox2.Text = "";
}
}
}

软件推荐 ---一款优秀的通信组件 HP_Socket的更多相关文章

  1. 推荐一款优秀的代码编辑软件--Source Insight

    “工欲善其事,必先利其器”,好的工具能够提高我们办事的效率,进而提升团队乃至企业的竞争力. 对于软件开发工程师来说,选择一款优秀的代码编辑软件也是很重要的.最近,我看到有很多同事还在用微软的VC ++ ...

  2. 给你推荐10款优秀的 HTML5 动画工具

    HTML5 在过去三年快速增长,已经成为 Web 开发人员最喜欢的编程语言之一.强大的编程语言拥有开发更好的网页应用的能力. HTML5 中引入的新技术都非常好,像 Chrome.Firefox.Sa ...

  3. 推荐13款优秀的Twitter Bootstrap JavaScript插件

    Bootstrap是基于HTML,CSS和JavaScript的简洁灵活的流行前端框架及交互组件集,由微博先驱Twitter在2011年8月开源的整套前端解决解决方案,拥有非常完备和详尽的开发文档,有 ...

  4. HP-Socket国产优秀socket通信组件推荐

    来源:http://blog.csdn.net/clb929/article/details/51085983 * HP-Socket 官方网站:http://www.jessma.org * HP- ...

  5. 向Web开发人员推荐12款优秀的 Twitter Bootstrap 组件和工具

    http://www.cnblogs.com/lhb25/archive/2012/09/11/resources-that-complement-twitter-bootstrap.html

  6. 推荐一款优秀的WPF开源项目

    项目介绍 此项目应用了Prism MVVM框架,项目展示数据来源于其他服务程序,使用的WebAPI通信,如果要正常运行此程序,需要您自己做一个WebAPI程序,由API接口提供数据驱动,其实直接查看代 ...

  7. 推荐五款优秀的PHP代码重构工具

    在软件工程学里,重构代码一词通常是指在不改变代码的外部行为情况下而修改源代码.软件重构需要借助工具完成,而重构工具能够修改代码同时修改所有引用该代码的地方.本文收集了五款出色的PHP代码重构工具,以帮 ...

  8. 推荐10款优秀的JavaScript Web UI库 框架和套件

    在进行Web开发时,并非所有的库都适合你的项目,但真正开发的时候,你任然需要依赖一款UI框架.特别在你时间紧迫的时候,它是你忠实的朋友. 他们都是些广泛使用包含不同语言实现的WEB UI框架.今天我就 ...

  9. 推荐一款优秀的web自动化测工具

    在业务使用的自动化测试工具很多.有开源的,有商业化的,各有各得特色,各有各得优点!下面我就介绍几个我用过的一款非常优秀的国产自动化测试工具.在现有的自动化软件当中,都是以元素的name.id.xpat ...

随机推荐

  1. 【面试普通人VS高手系列】谈谈你对AQS的理解

    AQS是AbstractQueuedSynchronizer的简称,是并发编程中比较核心的组件. 在很多大厂的面试中,面试官对于并发编程的考核要求相对较高,简单来说,如果你不懂并发编程,那么你很难通过 ...

  2. 使用React实现一个TodoList案例

    1.效果图: 2.项目源码 3.源码 TodoList.js import React, { Component, Fragment } from 'react'; import TodoItem f ...

  3. 高频重要前端API手写整理(call,apply,bind,instanceof,flat,filter,new,防抖,节流,深浅拷贝,数组乱序,数组去重,继承, lazyman,jsonp的实现,函数的柯里化 )

    Function.prototype.call = function(context,...args){ var context = context || window; context.fn = t ...

  4. Ubuntu16.04 安装和卸载MySQL数据库

    Ubuntu16.04 安装和卸载MySQL数据库 1 安装 安装非常简单,只需要三个命令 1.1 安装服务端 sudo apt-get install mysql-server 在这一步过程中会有提 ...

  5. OllyDbg---循环、串操作和寻址方式

    循环 字符串指令和寻址方式 循环 XOR ECX,ECX MOV ECX,15H LABEL: DEC ECX CMP ECX,0 JNE LABEL LOOP 重复循环,直到计数器的值为0,每次循环 ...

  6. 文件IO-Properties

    java.lang.Object 继承者 java.util.Dictionary<K,V> 继承者 java.util.Hashtable<Object,Object> 继承 ...

  7. 记一次线上websocket返回400问题排查

    现象 生产环境websocket无法正常连接,服务端返回400 bad request,开发及测试环境均正常. 抓包排查 src:nginx服务器 172.16.177.193dst:imp应用服务器 ...

  8. Go xmas2020 学习笔记 04、Strings

    04-Strings.unicode.utf-8.类型描述符.go 字符串在内存中的存储. Strings. String structure. String functions. Practice

  9. Promise了解

    Promise是一个构造函数,excutor是他的执行函数,同时也是构造函数的参数. new Promise(excutor) excutor有两个参数(resolve,reject) Promise ...

  10. golang内存对齐分析(转载)

    问题 type Part1 struct { a bool b int32 c int8 d int64 e byte } 在开始之前,希望你计算一下 Part1 共占用的大小是多少呢? func m ...