private void Accept(IAsyncResult iar) //参数为异步操作的状态
{
try
{
Socket socket = (Socket)iar.AsyncState;
Socket NewSocket = socket.EndAccept(iar); //异步接受传入的连接尝试,并创建新的 Socket 来处理远程主机通信
strRemoteIPEndPoint = NewSocket.RemoteEndPoint.ToString();
listSocketsConnected.Add(NewSocket);
this.Invoke(AddNewMessage, new object[] { DateTime.Now.ToString(), "连接" + strRemoteIPEndPoint });
//this.Invoke(AddNewMessage, new object[] { DateTime.Now.ToString(), "连接" + NewSocket.RemoteEndPoint.ToString() });
//lstbxMessage.Items.Add("连接"+NewSocket.RemoteEndPoint.ToString() + " " + DateTime.Now.ToString());
socket.BeginAccept(new AsyncCallback(Accept), socket);
//开始从连接的 Socket 中异步接收数据1024个字节到RevData
NewSocket.BeginReceive(RevData, 0, 1024, SocketFlags.None, new AsyncCallback(Receive), NewSocket);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
7 个解决方案
#1
#2
这说几天几夜也说不完。
#3
去下个开源的 QQ聊天 源代码来分析下 不就结了。
#4
仿QQ聊天工具 不是QQ聊天 补充下。
#5
服务器转发
#6
A连接到服务器,连接成功后,同样开始等待接收数据,同步异步随你。
A端:socket.connect(...);
if(socket.connected)
{
socket.accept(...);
}
具体可以看msdn自己学习。
A端:socket.connect(...);
if(socket.connected)
{
socket.accept(...);
}
具体可以看msdn自己学习。
#7
应该把消息存到服务器的数据库中,A从数据库取就好了。
#1
#2
这说几天几夜也说不完。
#3
去下个开源的 QQ聊天 源代码来分析下 不就结了。
#4
仿QQ聊天工具 不是QQ聊天 补充下。
#5
服务器转发
#6
A连接到服务器,连接成功后,同样开始等待接收数据,同步异步随你。
A端:socket.connect(...);
if(socket.connected)
{
socket.accept(...);
}
具体可以看msdn自己学习。
A端:socket.connect(...);
if(socket.connected)
{
socket.accept(...);
}
具体可以看msdn自己学习。
#7
应该把消息存到服务器的数据库中,A从数据库取就好了。