Socket编程的简单问题。 ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemnetsocketssocketclassselecttopic.htm 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有没有什么好的办法可以得到局域网现在有多少用户正在线阿?我现在是这样写的。好慢。 list.Items.Clear(); for (int i = 1;i<=255;i++) { string IP = "192.168.0." + i.ToString();; myServer = new IPEndPoint(IPAddress.Parse(IP), myPort); Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); try { socket.Connect(myServer); if(socket.Connected) { bool addBool = true; for(int iii=0;iii<list.Items.Count;iii++) { if(list.Items[iii].SubItems[0].Text == IP) { addBool = false; break; } else { continue; } } if(addBool) { ListViewItem objItem = new ListViewItem(); objItem.SubItems[0].Text = IP ; objItem.SubItems.Add(Dns.GetHostByAddress(IPAddress.Parse(IP)).HostName) ; list.Items.Add(objItem); } } } catch { for(int ii=0;ii<list.Items.Count;ii++) { if(list.Items[ii].SubItems[0].Text == IP) { list.Items[ii].Remove(); break; } } } 简单的很,你在服务器端维护客户连接listener.Start(); Console.WriteLine("正在等待客户端连接"); Console.WriteLine("按 Ctrl+C 退出..."); while (cont) { // 接受将阻塞,直到有人连接 Socket socket = listener.AcceptSocket(); List.add(socket.RemoteEndPoint.Tostring()); 远程客户:socket.RemoteEndPoint.Tostring(),这个在发生数据传送或者连接时都会得到至于在线人数:我觉得最简单的方法是,维护一个hash表,这个表当服务器接受一个连接后就增加一个,当然,当客户端发生异常退出时关闭socket并在hash表中除去这个连接。建议:hash表的key使用socket对象,而不是ip地址,因为一个ip可能允许多个客户的连接 help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemnetsocketssocketclassselecttopic.htm 在线程中操作 webBrowser 出错 又遇到调用js的奇怪问题,望各位协助解决~ 关于打印的2个问题求解? 求域名查询源码(asp.net(c#))急 求一个简单的正则表达式 组的应用 关于继承窗体中工具栏的合并顺序问题. SharpZipLib控件不支持在繁体系统上压缩和解压缩中文文件名 怎样实现这样的功能? TextEditorControl控件 设置只读,在线求助。。 怎样在WebForm上的TextBox中通过按钮在当前光标处插入字符串 Jmail接收邮件附件乱码,在线等待 请问那些在网上下载.net2003并且安装成功的高手们,你们是怎么安装的啊????
我现在是这样写的。好慢。
list.Items.Clear();
for (int i = 1;i<=255;i++)
{ string IP = "192.168.0." + i.ToString();;
myServer = new IPEndPoint(IPAddress.Parse(IP), myPort);
Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
try
{
socket.Connect(myServer);
if(socket.Connected)
{ bool addBool = true; for(int iii=0;iii<list.Items.Count;iii++)
{
if(list.Items[iii].SubItems[0].Text == IP)
{
addBool = false;
break;
}
else
{
continue;
} }
if(addBool)
{
ListViewItem objItem = new ListViewItem();
objItem.SubItems[0].Text = IP ;
objItem.SubItems.Add(Dns.GetHostByAddress(IPAddress.Parse(IP)).HostName) ;
list.Items.Add(objItem);
}
}
}
catch
{
for(int ii=0;ii<list.Items.Count;ii++)
{
if(list.Items[ii].SubItems[0].Text == IP)
{
list.Items[ii].Remove();
break;
}
}
}
listener.Start();
Console.WriteLine("正在等待客户端连接");
Console.WriteLine("按 Ctrl+C 退出..."); while (cont)
{
// 接受将阻塞,直到有人连接
Socket socket = listener.AcceptSocket();
List.add(socket.RemoteEndPoint.Tostring());
,当然,当客户端发生异常退出时关闭socket并在hash表中除去这个连接。建议:hash表的key使用socket对象,而不是ip地址,因为一个ip可能允许多个客户的连接