我做了一个sl的socket聊天室 客户端发一个消息到服务器 然后服务器端马上转发给所有客户端 现在的问题是A客户端发消息时 B客户端不会主动收到消息 而要当B客户端发消息时才收到刚才A客户端发的消息
部分代码:
private void sandMsg(string msg)
{
byte[] bytes = Encoding.UTF8.GetBytes(msg);
SocketAsyncEventArgs args = new SocketAsyncEventArgs();
args.RemoteEndPoint = socket.RemoteEndPoint;
//设置Socket参数的缓冲区参数,将我们的字节数组设置为Socket的缓冲区。
args.SetBuffer(bytes, 0, bytes.Length);
args.Completed += new EventHandler<SocketAsyncEventArgs>(SendComplete);
//发送数据
socket.SendAsync(args);
}
B客户端得不停地访问服务器端,这样才可以及时地接受信息。qq的后台貌似也是这么干的。
想要B客户端收到服务器的数据,B 必须先连接到 服务器。 你的链接有问题。
你的支持双工通信吗
B端要访问服务器,那样可能太费资源,那就在B端开个端口,监听消息,监听服务器是否有发往这个端口的消息,如果A给你消息的话,服务器应该往B的端口发消息,告诉B,有A给你发消息,然后B就可以接收消息了
我觉得至少要建立一个Socket,不然怎么接收呢?
socketasynceventargs
C#游戏服务器MMRPG交流群:136485198