这个程序还是没跑起来,下午知道的朋友帮我解释一下代码 并找出错误,
当然 如果能给我提供一个完整的组播例子 小弟将不胜感激!//这个是发送
private void SendMessage(string str)
{
try
{
//组IP
IPAddress GroupIp = IPAddress.Parse("224.5.6.7");
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//下边的2句话 我不明白
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(GroupIp));//此句话出错提示参数错误
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 1);
byte[] datas = new byte[1024];
Encoding.UTF8.GetBytes(str);
IPEndPoint iep = new IPEndPoint(GroupIp, 89);
s.Connect(iep);
s.Send(datas, datas.Length, SocketFlags.Multicast);
s.Close();
this.Text = "消息发送成功";
}
catch (Exception e)
{
this.Text = e.Message;
}
}
private void RecMessage()
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 89);
s.Bind(ipep);
IPAddress ip = IPAddress.Parse("224.5.6.7");
//下边的这句话我不明白
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip, IPAddress.Any)); while (true)
{
byte[] b = new byte[10];
s.Receive(b);
string str = System.Text.Encoding.ASCII.GetString(b, 0, b.Length);
this.Text = str;
}
s.Close();
}
当然 如果能给我提供一个完整的组播例子 小弟将不胜感激!//这个是发送
private void SendMessage(string str)
{
try
{
//组IP
IPAddress GroupIp = IPAddress.Parse("224.5.6.7");
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//下边的2句话 我不明白
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(GroupIp));//此句话出错提示参数错误
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 1);
byte[] datas = new byte[1024];
Encoding.UTF8.GetBytes(str);
IPEndPoint iep = new IPEndPoint(GroupIp, 89);
s.Connect(iep);
s.Send(datas, datas.Length, SocketFlags.Multicast);
s.Close();
this.Text = "消息发送成功";
}
catch (Exception e)
{
this.Text = e.Message;
}
}
private void RecMessage()
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 89);
s.Bind(ipep);
IPAddress ip = IPAddress.Parse("224.5.6.7");
//下边的这句话我不明白
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip, IPAddress.Any)); while (true)
{
byte[] b = new byte[10];
s.Receive(b);
string str = System.Text.Encoding.ASCII.GetString(b, 0, b.Length);
this.Text = str;
}
s.Close();
}
解决方案 »
- winform中如何嵌入可执行文件?
- 文件正由另一进程使用,因此该进程无法访问该文件
- 请高手帮忙,excel报表中含有动态单元格,在C#导入导出,并且在前台显示合并单元格的excel形式
- 命令参数遇到个小问题
- 关于[此 SqlTransaction 已完成;它再也无法使用。]的另外一种问题
- 最后85分全给了,只想求达人给个意见,用电子商务客户流失分析做硕士毕业论文可行吗?关系到小妹的人生呀,来者有分·······
- 如何实现将水质在线监测的数据写入C#中
- WPF datagrid数据动态绑定
- 菜鸟线程问题求助!!
- 请问如何通过子窗体像父窗体传参数?
- Microsoft Visual Studio 2005有关设置的一个问题
- 数据入库的问题,麻烦各位大大了!不胜感谢!
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 1);
具体看看msdn就清楚了,就是设置socket的一些选项/属性