■求助■如何用,c#实现聊天室?■■■

目前写了一套聊天室程序,使用tcp协议,server和client都启动了监听,实现双向传输文件和消息。但是朋友说这样不行,client不可以开监听,说这样对机器的负担太重。目前不知道怎么办了,具体的要求就是,双向传输,server处于监听状态,client在连接server后,server可以给client发消息(数据流)。

多谢
---------------------------------------------------------------

try UDP

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace UdpServer
{
///

1<summary>   
2/// Summary description for Class1.   
3/// </summary>

class Char
{
private static IPAddress remoteIPAddress;
private static int remotePort;
private static int localPort;
///

1<summary>   
2/// The main entry point for the application.   
3/// </summary>

[STAThread]
static void Main(string[] args)
{
try
{
//Get necessary data for connection
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());

//Create thread for listening
Thread tRec = new Thread(new ThreadStart(Receiver));
tRec.Start();

while(true)
{
Send(Console.ReadLine());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}

private static void Send(string datagram)
{
//Create UdpClient
UdpClient sender = new UdpClient();

//Create IPEndPoint with detail of remote host
IPEndPoint endPoint = new IPEndPoint(remoteIPAddress,remotePort);

try
{
byte[] bytes = Encoding.ASCII.GetBytes(datagram);
sender.Send(bytes,bytes.Length,endPoint);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
sender.Close();
}
}

private static void Receiver()
{
//Create a UdpClient for reading incoming data.
UdpClient receivingUdpClient = new UdpClient(localPort);

//IPEndPoint with remote host information
IPEndPoint RemoteIPEndPoint = null;

try
{
Console.WriteLine("---------------**Ready for char!!!!------------");
while(true)
{
//wait for datagram
byte[] receiveBytes = receivingUdpClient.Receive(ref RemoteIPEndPoint);

//Convert and display data
string returndata = Encoding.ASCII.GetString(receiveBytes);
Console.WriteLine("-"+returndata.ToString());
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}

---------------------------------------------------------------

连接好后,也用客户端向服务器端发消息就是了
---------------------------------------------------------------

编写一个web项目。采用XML。建立无刷新页面

Published At
Categories with Web编程
Tagged with
comments powered by Disqus