using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;namespace Chart
{
public partial class FrmFirst : Form
{
//用于存储用户IP等信息
List<string[]> users = new List<string[]>(); public FrmFirst()
{
InitializeComponent();
} //本机hostname
private string myName; public string MyName
{
get
{
return Dns.GetHostName();
} } //IP
private string myIP; public string MyIP
{
get
{
IPAddress[] ip = Dns.GetHostAddresses(MyName);
return ip[0].ToString();
}
}
/// <summary>
/// 鼠标双击节点的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
FrmSecond frm_sec = new FrmSecond();
frm_sec.Show();
}
/// <summary>
/// 上下线端口:8888
/// ps:发送
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmFirst_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
Thread sendOnlineThead = new Thread(new ThreadStart(ImOnline));
Thread acceptThead = new Thread(new ThreadStart(AcceptFromMessage));
//Thread addnodeThead = new Thread(new ThreadStart(AddNodes));
acceptThead.Start();
sendOnlineThead.Start();
//addnodeThead.Start();
}
/// <summary>
/// 主窗体打开的时候
/// 调用此方法
/// 发送广播
/// 传递"我在线"这个信息
/// </summary>
private void ImOnline()
{
//IPEndPoint ipServer = new IPEndPoint(IPAddress.Parse(MyIP), 8888
UdpClient client = new UdpClient(MyIP.Substring(0, MyIP.LastIndexOf('.') + 1) + "255", 8888);
byte[] bt = Encoding.Default.GetBytes(MyIP + "|" + MyName);
client.Send(bt, bt.Length);
}
/// <summary>
///上下线端口:8888
///ps:监听
///如果在集合中找到
///退出循环
///找不到的话
///在自己TreeView列表里添加
///并发送给对方信息
/// </summary>
private void AcceptFromMessage()
{
string[] str;
IPEndPoint ipServer = new IPEndPoint(IPAddress.Parse(MyIP), 8888);
UdpClient server = new UdpClient(ipServer);
while (true)
{
byte[] bt = server.Receive(ref ipServer);
string readLineDataFromClient = Encoding.Default.GetString(bt);
str=readLineDataFromClient.Split('|');
foreach (var t in users)
{
bool b = false;
if (t[0].Equals(str[0]))
{
b = true;
} if(!b)
{
users.Add(str);
UdpClient SendInfo = new UdpClient(str[0], 8888);
byte[] bit = Encoding.Default.GetBytes(MyIP + "|" + MyName);
SendInfo.Send(bit, bit.Length);
}
}
//Thread.Sleep(5000);
treeView1.Nodes.Clear();
// users.Add(str);
//this.textBox1.Text=string.Format("接受到数据:[{0}]", readLineDataFromClient);
}
foreach (var t in users)
{
TreeNode tn = new TreeNode(t[0] + "(" + t[1] + ")");
tn.Name = t[0];
treeView1.Nodes.Add(tn);
}
} //public void AddNodes()
//{
//} //private void button4_Click(object sender, EventArgs e)
//{
// AddNodes();
//} }
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;namespace Chart
{
public partial class FrmFirst : Form
{
//用于存储用户IP等信息
List<string[]> users = new List<string[]>(); public FrmFirst()
{
InitializeComponent();
} //本机hostname
private string myName; public string MyName
{
get
{
return Dns.GetHostName();
} } //IP
private string myIP; public string MyIP
{
get
{
IPAddress[] ip = Dns.GetHostAddresses(MyName);
return ip[0].ToString();
}
}
/// <summary>
/// 鼠标双击节点的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
FrmSecond frm_sec = new FrmSecond();
frm_sec.Show();
}
/// <summary>
/// 上下线端口:8888
/// ps:发送
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmFirst_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
Thread sendOnlineThead = new Thread(new ThreadStart(ImOnline));
Thread acceptThead = new Thread(new ThreadStart(AcceptFromMessage));
//Thread addnodeThead = new Thread(new ThreadStart(AddNodes));
acceptThead.Start();
sendOnlineThead.Start();
//addnodeThead.Start();
}
/// <summary>
/// 主窗体打开的时候
/// 调用此方法
/// 发送广播
/// 传递"我在线"这个信息
/// </summary>
private void ImOnline()
{
//IPEndPoint ipServer = new IPEndPoint(IPAddress.Parse(MyIP), 8888
UdpClient client = new UdpClient(MyIP.Substring(0, MyIP.LastIndexOf('.') + 1) + "255", 8888);
byte[] bt = Encoding.Default.GetBytes(MyIP + "|" + MyName);
client.Send(bt, bt.Length);
}
/// <summary>
///上下线端口:8888
///ps:监听
///如果在集合中找到
///退出循环
///找不到的话
///在自己TreeView列表里添加
///并发送给对方信息
/// </summary>
private void AcceptFromMessage()
{
string[] str;
IPEndPoint ipServer = new IPEndPoint(IPAddress.Parse(MyIP), 8888);
UdpClient server = new UdpClient(ipServer);
while (true)
{
byte[] bt = server.Receive(ref ipServer);
string readLineDataFromClient = Encoding.Default.GetString(bt);
str=readLineDataFromClient.Split('|');
foreach (var t in users)
{
bool b = false;
if (t[0].Equals(str[0]))
{
b = true;
} if(!b)
{
users.Add(str);
UdpClient SendInfo = new UdpClient(str[0], 8888);
byte[] bit = Encoding.Default.GetBytes(MyIP + "|" + MyName);
SendInfo.Send(bit, bit.Length);
}
}
//Thread.Sleep(5000);
treeView1.Nodes.Clear();
// users.Add(str);
//this.textBox1.Text=string.Format("接受到数据:[{0}]", readLineDataFromClient);
}
foreach (var t in users)
{
TreeNode tn = new TreeNode(t[0] + "(" + t[1] + ")");
tn.Name = t[0];
treeView1.Nodes.Add(tn);
}
} //public void AddNodes()
//{
//} //private void button4_Click(object sender, EventArgs e)
//{
// AddNodes();
//} }
}
或者是条件不符合.跳过了.