1. 程式人生 > >軟件推薦 ---一款優秀的通信組件 HP_Socket

軟件推薦 ---一款優秀的通信組件 HP_Socket

.text 連接 tar .com mar ive enc .get ram

* 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