将 var client = mainSocket.EndAccept(iar); 的结果保存在方法外部声明的一个 List<...> 集合中。群发消息,你直接对这些 client 执行send就行了。不要去注释掉人家给你写的 client.BeginReceive( ...) 代码。timer 要少用。就算用,整个来说用一个就够了。不要每一个会话都产生一个 timer 。另外你循环 99 次是要干什么呢?完全看不出你的流程设计思路。当你拿到别人的代码,先学别人的程序。自己先不要乱改。虽然你贴了一大通代码,但是一眼就能看出哪些是你抄袭别人的,哪些是你写的。一眼就能看出你的问题。所以不是说抄别人的进行胡乱嫁接就一定会变成你自己的东西。你需要先能够完全接受和理解别人的程序。
解决方案 »
- C#自定义方法求解
- 有人知道这套界面是怎么做出来的吗?
- 菜鸟提问 关于 NavigateUrl
- 如何进行以自定义的打印格式的编程,我想把DataGird中的数据打印到一个票据格式的表格中
- 2005绑定列可以用DataFormatString="{0:d}" HtmlEncode="False"去掉时间,模板列却不行,应该用什么方法?
- 求助:定义函数求1个以上的整数中的最大值int max(intc,...),整数个数由参数C指定.
- 小妹在这时请各位哥哥姐姐们讲解一下关于class的问题?
- DataGridView格式化日期输入问题
- C#如何下载已经完成的网页???
- 使用水晶报表的时候报错“无法识别的转义序列”
- C# Socket长连接
- WM_CLICK点击第三方软件按钮可以弹窗,但自己开发的WINFORM卡死
//每隔60秒轮一次所有设备
for (int i = 0; i < 100; i++)
{
client.Send(dataSender);
//接收客户端的消息
client.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), client);
}问下你这100是什么....100个客户端???在哪添加的 我怎么没看到?实际上 这个client就是连接的对象..你循环啥的没什么用.而且你也不需要在循环中beginrecevie
直接把////接收客户端的消息下面的注释打开 把上面的注释了 就行了另外说下.如果要保存"客户端的状态"我们一般都会用一个"集合"来装它我个人习惯这样..
Dictionary<string, Socket> clientList= new Dictionary<string, Socket>();
当有客户端连接(BeginAccept)的时候 我就会clientList.Add("192.168.1.115:52358",client);
掉线的时候 我可以在remove所以 操作的时候 我直接拿clientList负责连 就是连接负责收 就是收..操作交给别人....
timer.Interval = 10000D;
timer.Enabled = true;
timer.Elapsed += (o, a) =>
{
for clientlist.count
var client=client[i]
client.send(new byte[] .........)
};
正如sp所说的 一个够了...
timer.Interval = 10000D;
timer.Enabled = true;
首先我把这一段代码,拿到BeginAccept外。2.我要把客户端返回的信息,放在list里面3.我要根据客户端返回的不同信息,给客户端返回信息或把数据保存到数据库中。
(现在第一,第二步,好实现,第三步该如果处理?)
var bytemessage = Encoding.ASCII.GetBytes(message);就够了.各种if 各种else 各种insert 各种send..你不会连这些都不会写吧,...我相信你会的.