用udp时出现了问提,非常急啊 你的第一句没加分号 :-)第二句中的 this.groupAddress 和第一句的 groupAddress 命名一样,但你加了this不知道你想用的是哪个。再者第一句的groupAddress没赋值只凭这两句不足以判断问题出在何处 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //quickstart的例子using System;using System.Net;using System.Net.Sockets;using System.Threading;using System.Text;public class Chat { private static UdpClient m_Client; private static int ListenerPort = 9999; private static int SenderPort = 9999; private static int LocalPort; private static int RemotePort; private static string m_szHostName; private static IPAddress m_GroupAddress; private static IPHostEntry m_LocalHost; private static IPEndPoint m_RemoteEP; private static bool m_Done = false; public static void Usage() { Console.WriteLine("UDP 多路广播聊天实用工具"); Console.WriteLine("\n用法::"); Console.WriteLine("chat.exe"); } public static void Main( String [] args ) { LocalPort = SenderPort; RemotePort = ListenerPort; if( args.Length > 0 ) { // // 输出帮助消息,因为此实用工具不采用任何参数 // Usage(); return; } m_szHostName = Dns.GetHostName(); m_LocalHost = Dns.GetHostByName(m_szHostName); Console.WriteLine("本地端口:{0},远程端口:{1}", LocalPort, RemotePort); Console.WriteLine("正在初始化..."); Initialize(); Console.WriteLine("正在启动侦听器线程..."); Thread t = new Thread(new ThreadStart(Listener)); t.Start(); Byte [] buffer = null; Encoding ASCII = Encoding.ASCII; bool m_ShuttingDown = false; while(!m_ShuttingDown) { String s = Console.ReadLine(); if( s.Length == 0 ) continue; if(String.Compare(s,0,"@",0,1) == 0) { m_Done = true; // // 将结束符发送给我们自己, // 以便接收线程可以关闭 // s = m_szHostName + ":@"; m_ShuttingDown = true; } else { s = m_szHostName + ":" + s; } buffer = new Byte[s.Length + 1]; // // 将数据发送给远程对方主机 // int len = ASCII.GetBytes( s.ToCharArray(), 0, s.Length, buffer, 0); int ecode = m_Client.Send(buffer, len, m_RemoteEP); if(ecode <= 0) { Console.WriteLine("发送时出错:" + ecode); } } t.Abort(); t.Join(); Console.WriteLine("正在关闭连接..."); Terminate(); } // Main public static void Terminate() { m_Client.DropMulticastGroup(m_GroupAddress); } public static void Initialize() { // // 实例化 UdpCLient // m_Client = new UdpClient(LocalPort); // // 创建多路广播组对象 // m_GroupAddress = IPAddress.Parse("224.0.0.1"); // // 联接组 // try { m_Client.JoinMulticastGroup(m_GroupAddress, 100); } catch(Exception) { Console.WriteLine("无法联接多路广播组"); } // // 创建对方主机的终结点 // m_RemoteEP = new IPEndPoint( m_GroupAddress, RemotePort ); } public static void Listener() { // // 侦听器等待数据到来 // 并用缓冲区保存它。 Thread.Sleep(2000); // 确保 client2 正在接收 Encoding ASCII = Encoding.GetEncoding("gb2312"); while(!m_Done) { IPEndPoint endpoint = null; Byte[] data = m_Client.Receive(ref endpoint); String strData = ASCII.GetString(data); if( strData.IndexOf(":@") > 0 ) { // // 我们接收到一个终止指示, // 现在我们必须确定它是来 // 自我们的主线程的关闭, // 还是来自其他地方 // Char [] separators = {':'}; String [] vars = strData.Split(separators); if( vars[0] == m_szHostName ) { // // 这是来自我们自己的线程,因此 // 立即结束 // Console.WriteLine("正在关闭侦听器线程..."); // // 此过程应已由主线程完成了,但为 // 安全起见,我们再执行一次 // m_Done = true; } else { // // 这是来自其他地方的 // Console.WriteLine("{0} 已离开对话", vars[0]); } } else { // // 这是从其他地方以及我们自己 // 处接收到的正常数据 // 在输出前,查看它是否来自我 // 们自己 // if(strData.IndexOf(":") > 0) { Char [] separators = {':'}; String [] vars = strData.Split(separators); if( vars[0] != m_szHostName ) { Console.WriteLine(strData); } } } } Console.WriteLine("侦听器线程已完成..."); return; }} c# js 弹出一个对话框,让你选择定时发送的时间 求一简单SQL语句 关于 C# TabControl控件中tabpage切换的问题。 异形窗体的绘制问题 把Excel中的数据导入到数据表中地问题 请问游戏中如何给动画人物传递鼠标右击的事件啊?100分 这个高手是怎样从大智慧蹭出行情数据来的呢? 如何將一個exe文件和一個xml配置文件打包到一起,用c#的al.exe可以嗎? 如何进行字符串分割,在线 求助,c#制作屏幕截图 如何打印DataList中显示的资料? 急!有关报表打印的问题,在线等待,进来就给分。。。。。
using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Text;public class Chat { private static UdpClient m_Client; private static int ListenerPort = 9999;
private static int SenderPort = 9999;
private static int LocalPort;
private static int RemotePort; private static string m_szHostName; private static IPAddress m_GroupAddress;
private static IPHostEntry m_LocalHost;
private static IPEndPoint m_RemoteEP; private static bool m_Done = false; public static void Usage() {
Console.WriteLine("UDP 多路广播聊天实用工具");
Console.WriteLine("\n用法::");
Console.WriteLine("chat.exe");
} public static void Main( String [] args ) { LocalPort = SenderPort;
RemotePort = ListenerPort; if( args.Length > 0 ) {
//
// 输出帮助消息,因为此实用工具不采用任何参数
//
Usage();
return;
} m_szHostName = Dns.GetHostName(); m_LocalHost = Dns.GetHostByName(m_szHostName); Console.WriteLine("本地端口:{0},远程端口:{1}", LocalPort, RemotePort); Console.WriteLine("正在初始化..."); Initialize(); Console.WriteLine("正在启动侦听器线程..."); Thread t = new Thread(new ThreadStart(Listener));
t.Start(); Byte [] buffer = null; Encoding ASCII = Encoding.ASCII; bool m_ShuttingDown = false; while(!m_ShuttingDown) {
String s = Console.ReadLine(); if( s.Length == 0 )
continue; if(String.Compare(s,0,"@",0,1) == 0) {
m_Done = true;
//
// 将结束符发送给我们自己,
// 以便接收线程可以关闭
//
s = m_szHostName + ":@";
m_ShuttingDown = true;
} else {
s = m_szHostName + ":" + s;
}
buffer = new Byte[s.Length + 1];
//
// 将数据发送给远程对方主机
// int len = ASCII.GetBytes( s.ToCharArray(), 0, s.Length, buffer, 0); int ecode = m_Client.Send(buffer, len, m_RemoteEP); if(ecode <= 0) {
Console.WriteLine("发送时出错:" + ecode);
} } t.Abort();
t.Join(); Console.WriteLine("正在关闭连接..."); Terminate(); } // Main public static void Terminate() {
m_Client.DropMulticastGroup(m_GroupAddress);
} public static void Initialize() { //
// 实例化 UdpCLient
//
m_Client = new UdpClient(LocalPort); //
// 创建多路广播组对象
// m_GroupAddress = IPAddress.Parse("224.0.0.1"); //
// 联接组
//
try {
m_Client.JoinMulticastGroup(m_GroupAddress, 100);
} catch(Exception) {
Console.WriteLine("无法联接多路广播组");
} //
// 创建对方主机的终结点
//
m_RemoteEP = new IPEndPoint( m_GroupAddress, RemotePort ); } public static void Listener() { //
// 侦听器等待数据到来
// 并用缓冲区保存它。 Thread.Sleep(2000); // 确保 client2 正在接收 Encoding ASCII = Encoding.GetEncoding("gb2312"); while(!m_Done) {
IPEndPoint endpoint = null;
Byte[] data = m_Client.Receive(ref endpoint); String strData = ASCII.GetString(data); if( strData.IndexOf(":@") > 0 ) {
//
// 我们接收到一个终止指示,
// 现在我们必须确定它是来
// 自我们的主线程的关闭,
// 还是来自其他地方
//
Char [] separators = {':'};
String [] vars = strData.Split(separators); if( vars[0] == m_szHostName ) {
//
// 这是来自我们自己的线程,因此
// 立即结束
//
Console.WriteLine("正在关闭侦听器线程..."); //
// 此过程应已由主线程完成了,但为
// 安全起见,我们再执行一次
//
m_Done = true;
}
else {
//
// 这是来自其他地方的
//
Console.WriteLine("{0} 已离开对话", vars[0]);
}
}
else {
//
// 这是从其他地方以及我们自己
// 处接收到的正常数据
// 在输出前,查看它是否来自我
// 们自己
//
if(strData.IndexOf(":") > 0) {
Char [] separators = {':'};
String [] vars = strData.Split(separators); if( vars[0] != m_szHostName ) {
Console.WriteLine(strData);
}
}
}
} Console.WriteLine("侦听器线程已完成...");
return;
}
}