System.Net.PeerToPeer 命名空间
http://msdn.microsoft.com/zh-cn/library/system.net.peertopeer.aspx
http://msdn.microsoft.com/zh-cn/library/bb906998(VS.90).aspx
System.Net.PeerToPeer.Collaboration 命名空间
http://msdn.microsoft.com/zh-cn/library/system.net.peertopeer.collaboration(v=VS.90).aspx
其他传统的 System.Net 里的类。
挺麻烦的,Astar WizardWu 说的都不对,无法在Asp.net中实现,
1,在Asp.net中Flash ,silverlight或你自己写的ActiveC控件;
2,通过服务器中转,服务器保存临时的聊天信息列表,页面通过java script定时轮循查询;
在winform 下 Socket通讯。
发送信息:
IPAddress ip = Dns.GetHostAddresses(GlobalInfo.IP).GetValue(0) as IPAddress;
IPEndPoint serverFullAddr = new IPEndPoint(ip, GlobalInfo.Port);
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sock.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, 0);
try
{ //建立与短信程序的连接
sock.Connect(serverFullAddr);
byte[] byteSend = System.Text.Encoding.UTF8.GetBytes(Content.ToCharArray());
sock.Send(byteSend);
WriteLog(string.Format("目标{0}[{1}]发送成功。", GlobalInfo.IP, GlobalInfo.Port));
}
catch (SocketException ex)
{
WriteLog(string.Format("目标{0}[{1}]发送失败[{2}]。", GlobalInfo.IP, GlobalInfo.Port, ex.Message));
}
接收信息:
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
try
{
socket.Bind(new IPEndPoint(IPAddress.Parse(Info.IP), int.Parse(Info.PORT)));
socket.Listen((int)SocketOptionName.MaxConnections);
while (true)
{
Socket a = socket.Accept();
if (a.Connected)
{
byte[] stream = new byte[80];
a.Receive(stream);
string message = System.Text.Encoding.UTF8.GetString(stream);
InsertRechText ins = new InsertRechText(Insert);
Invoke(ins, new object[] { message });
}
if (isover)
return;
}
}
catch (Exception ex)
{
WriteLog(string.Format("接收信息失败。[{0}]", ex.Message));
throw ex;
}
finally
{
socket.Close();
}
如果是web下的麻烦一点。
但是也是可以实现的。但是可能就不是点对点的发送信息了。应该是"拉"操作。把需要在第三方进行托管。然后两个“点”从托管方来拉信息。