.net中axWinsock 监听多个客户端
来源:互联网 发布:淘宝代购利润是多少 编辑:程序博客网 时间:2024/06/05 07:24
网上针对于.net中的axWinsock 控件的资料比较少,而且案例更是少的可怜。
前段时间一直在折磨 axWinsock 如何监听多个客户端。现在终于把它弄出来了,希望能帮到需要的人。
服务器端:
添加axWinsock 控件到窗体中。在控件属性中设置端口 LocalPort 如:1001,IP地址LocalIP,控件会自动绑定了。
1、在窗体加载事件中开启axWinsock1监听
private void Form1_Load(object sender, EventArgs e)
{
axWinsock1.Listen();//开启监听
}
2、在窗体后台代码创建两个事件
(1)接收发送事件
private void ax_DataArrival(object sender, AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent e)
{
try
{
object data = "";
AxMSWinsockLib.AxWinsock sendsock = (AxMSWinsockLib.AxWinsock)sender;
sendsock.GetData(ref data);//接收
sendsock.SendData(sendsock.RemoteHostIP + ":" + sendsock.RemotePort + ",知道了,客户端。我是服务器!" + "\n");//发送
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
(2)axWinsock断开事件
private void ax_CloseEvent(object sender, EventArgs e)
{
AxMSWinsockLib.AxWinsock sendsock = (AxMSWinsockLib.AxWinsock)sender;
socklist.Remove(sendsock);
this.Controls.Remove(sendsock);
}
3、给axWinsock ConnectionRequest事件中添加以下代码
int k;
private void axWinsock1_ConnectionRequest(object sender, AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent e)
{
//创建AxWinsock 控件绑定不同的客户端,并且添加到窗体中
AxMSWinsockLib.AxWinsock axsock = new AxMSWinsockLib.AxWinsock();
axsock.Name = (axsock + e.requestID.ToString() + k.ToString());
((System.ComponentModel.ISupportInitialize)(axsock)).BeginInit();
this.Controls.Add(axsock);
int rows = this.Controls.Count;
((System.ComponentModel.ISupportInitialize)(axsock)).EndInit();
axsock.Accept(e.requestID);
k++;
axsock.DataArrival += ax_DataArrival;//给客户端绑定接收发送事件
axsock.CloseEvent += ax_CloseEvent;
}
服务器已经创建完毕
============================================================================================================
客户端:
1、在客户端窗体中添加axWinsock控件
2、在窗体加载中开启axWinsock 连接服务器
private void Form1_Load(object sender, EventArgs e)
{
axWinsock1.Connect(服务器IP, 服务器端口);
}
3、给axWinsock控件中的ConnectionRequest事件中接收服务器发来的信息
private void axWinsock1_DataArrival(object sender, AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent e)
{
object data = "";
axWinsock1.GetData(ref data);
richTextBox1.AppendText((String)data+"\n");
}
4、发送信息
//发送按钮事件
private void button2_Click(object sender, EventArgs e)
{
axWinsock1.SendData("我是客户端啊!");
}
- .net中axWinsock 监听多个客户端
- select监听多个客户端 -- linux函数
- Python 一个服务器监听多个客户端请求
- 多个Button监听
- 多个listview监听
- 多个按钮监听
- 如何在ASP.net中实现限制一个用户名在多个客户端IE登陆的方法
- 如何在ASP.net中实现限制一个用户名在多个客户端IE登陆的方法
- android中实现对多个EditText的监听
- Android中同时监听多个Button的实现
- android中实现对多个EditText的监听
- mui中如何同时监听多个相同的标签
- android中实现对多个EditText的监听
- Socket服务端接受多个客户端的连接(.NET)
- Android中一个控件添加多个监听方法(监听的追加,而非覆盖)
- spring jms 多个监听
- Apache监听多个端口
- 多个panel监听问题
- linux内核开发板启动流程
- 【重头学习Android】 关于Activity生命周期
- 径向基网络(RBF network)之BP监督训练
- js数组进阶
- android elicipse常用快捷键
- .net中axWinsock 监听多个客户端
- myeclipse设置utf-8格式
- magento web services API之sales_order.list
- iOS常用的高效开发宏
- 如何修改用户SSH\telnet登陆linux时候显示的欢迎信息
- 单播、广播和多播IP地址
- 朴素贝叶斯(NaiveBayes)算法总结
- CUnit-2.1-3.tar.bz2 安装以及遇到问题的解决办法
- [Project Intro] Disable and enable specified web proxy in code