.net中axWinsock 监听多个客户端

网上针对于.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("我是客户端啊!");
        }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值