.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("我是客户端啊!");

}

时间: 2024-08-29 19:03:02

.net中axWinsock 监听多个客户端的相关文章

.Net TCP探索(一)——TCP服务端开发(同时监听多个客户端请求)

????最近在园子里看了大神写的(面试官,不要再问我三次握手和四次挥手),忍不住写段程序来测试一番. ????在网上找了很多例子,大多只实现了TCP点对点通讯,但实际应用中,一个服务器端口往往要监听多个客户端发来的消息. 测试工具下载:https://download.csdn.net/download/nbyanghuichao/11872360 ????本例采用System.Threading实现多线程监听,下面只介绍核心代码,省略了消息提示和错误处理,可以从我的GitHub获取完整代码:h

Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差

Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差别 Nginx连接fastcgi的方式有2种:unix domain socket和TCP,Unix domain socket 或者 IPC socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信.与管道相比,Unix domain sockets 既可以使用字节流和数据队列,而管道通信则只能通过字节流.Unix domain sockets的接口和Internet socke

spring中配置监听队列的MQ

一.spring中配置监听队列的MQ相关信息注:${}是读取propertites文件的常量,这里忽略.绿色部分配置在接收和发送端都要配置. <bean id="axx" class="com.ibm.mq.jms.MQQueueConnectionFactory"> <property name="hostName" value="${}" />  <property name="po

oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序

15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错.错误提示内容如下. 错误分析: 经过查看警告中给出的日志文件 F:\develop\oracle_data\app\Administrator\cfgtoollog

ALERT日志中常见监听相关报错之一:ORA-609错误的排查

参考MOS文档有: Troubleshooting Guide ORA-609 : Opiodr aborting process unknown ospid (文档 ID 1121357.1) Alert.log shows ORA-609 with TNS-12537: TNS:connection closed (文档 ID 1538717.1) Fatal NI Connect 12560' And 'ORA-609 Opiodr Aborting Process' Errors In

ALERT日志中常见监听相关报错之三:ORA-609 TNS-12537 and TNS-12547 or TNS-12170 TNS-12535错误的排查

1.11G中ALERT日志中有报错ORA-609 TNS-12537 and TNS-12547 or TNS-12170  12170, 'TNS-12535等问题的解决方法: Troubleshooting Guide for TNS-12535 or ORA-12535 or ORA-12170 Errors (文档 ID 119706.1) TNS-12535 / ORA-12535 on Connection to Database (文档 ID 214122.1) 11g: ORA-

select监听多个客户端 -- linux函数

使用select函数可以以非阻塞的方式和多个socket通信.程序只是演示select函数的使用,功能非常简单,即使某个连接关闭以后也不会修改当前连接数,连接数达到最大值后会终止程序. 1. 程序使用了一个数组fd_A,通信开始后把需要通信的多个socket描述符都放入此数组. 2. 首先生成一个叫sock_fd的socket描述符,用于监听端口. 3. 将sock_fd和数组fd_A中不为0的描述符放入select将检查的集合fdsr. 4. 处理fdsr中可以接收数据的连接.如果是sock_

Java监听器中ServletRequestListener监听Request的创建和销毁

ServletRequest和HttpServletRequest的区别 HttpServletRequest和ServletRequest都是接口,HttpServletRequest继承自ServletRequest HttpServletRequest比ServletRequest多了一些针对于Http协议的方法.如getHeader(), getMethod(),getSession()等等. HttpServletRequest 客户端浏览器发出的请求被封装成为一个HttpServle

关于vue中滚动监听失效问题

在vue项目中, 监听window滚动失效;并且document.body.scrollTop一直是0的情况! 查找了许多资料;并没有找到合理的解决方案; 最中发现,在index.html设置了html,body的宽高设置成了100%; 这样会造成window.onscroll监听不到正确的滚出高度(恒为0); 不和你们多bb:解决方案: 将html,body的height设置为auto;即可解决!!