您的位置:首页 > 其它

一个UDP的聊天控制台程序

2007-06-07 18:21 429 查看
实现了一个UDP的聊天控制台程序今天花了点时间看了哈.NET网络高级编程,动手,通过该程序,熟悉了NET利用UdpClient进行网络数据传送的一些方法,现把代码贴出来.
public class Chat
{
private static IPAddress remoteIPAddress;
private static int remotePort;
private static int localPort;
[STAThread]
static void Main(string[]args)
{
try
{
Console.WriteLine("Enter Local Port");
localPort=Convert.ToInt16(Console.ReadLine());

Console.WriteLine("Enter Remote Port");
remotePort=Convert.ToInt16(Console.ReadLine());

Console.WriteLine("Enter Remote IP address");
remoteIPAddress=IPAddress.Parse(Console.ReadLine());

//这里创立一个监听辅助线程,接收对方传送来的数据
Thread tRec=new Thread(new ThreadStart(Receiver));
tRec.Start();

while(true)
{
//当前线程(主线程)总不返回,一直执行发送信息,直到关闭应用
Send(Console.ReadLine());
}
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
}
private static void Send(string datagram)
{
UdpClient sender=new UdpClient();

IPEndPoint endPoint=new IPEndPoint(remoteIPAddress,remotePort);
try
{
//Convert data to byte array
byte[]bytes=Encoding.ASCII.GetBytes(datagram);

//向某个远程主机的某端口发送数据
sender.Send(bytes,bytes.Length,endPoint);
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
sender.Close();
}
}
public static void Receiver()
{
UdpClient receivingUdpClient=new UdpClient(localPort);
IPEndPoint RemoteIpEndPoint=null;
try
{
Console.WriteLine("--------------*******Read for chat!!!*********------------------");
while(true)
{
byte[]receiveBytes=receivingUdpClient.Receive(ref RemoteIpEndPoint);

string returnData=Encoding.ASCII.GetString(receiveBytes);
Console.WriteLine("-"+returnData.ToString());
}
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
receivingUdpClient.Close();
}
}
}
从以上代码中,我们知道在利用UdpClient进行数据的传输时,主机A a端口向主机B a端口发送数据; 主机B b端口向主机A b端口发送数据
即每个主机方有一个发送端口,还有一个接收端口.从而达到相互通信的目的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: