Network programming (聊天)服务器和客户端之间的通信

Network programming (聊天)服务器和客户端之间的通信,network-programming,Network Programming,只是为了澄清一些问题 假设我正在制作一个聊天应用程序。大多数在线教程都是基本的服务器客户端程序,直接以字符串形式发送聊天信息 那么,如果有人在线或离线呢。客户机如何将这些更改通知服务器?我想到的是使用标志{online}User、{offline}User、{privatechat}blabla 如果有人知道你的代码是如何运行的,那会允许他们通过不断发送{online}blabla进行破坏。 这是可行的,但也有一些我可以想到的缺陷。正确或更好的方法是什么 有人能给我指出正确的方向吗?谢谢 或者另

只是为了澄清一些问题

假设我正在制作一个聊天应用程序。大多数在线教程都是基本的服务器客户端程序,直接以字符串形式发送聊天信息

那么,如果有人在线或离线呢。客户机如何将这些更改通知服务器?我想到的是使用标志{online}User、{offline}User、{privatechat}blabla

如果有人知道你的代码是如何运行的,那会允许他们通过不断发送{online}blabla进行破坏。 这是可行的,但也有一些我可以想到的缺陷。正确或更好的方法是什么

有人能给我指出正确的方向吗?谢谢

或者另一个例子,在游戏中。要告诉单元向右移动,它是否将字符串发送回服务器{unit}{move right}?沿着这些路线的东西

我有点了解如何制作聊天服务器。如果我只是在文本框中加上前缀{chat}。只要我读了这个命令{chat},我就会忽略出现的任何命令


在RTS里怎么样?不是我要做一个,只是好奇,你的意思是有50根线告诉你单位如何移动,攻击,受到伤害,行动等等?所有这些命令都将在一个线程上执行吗?还是多线程?

您必须实现会话处理,并发送sessionToken命令,以便在游戏中移动一个单元。所以,服务器将能够检查被指向的用户是否有权订购被指向的设备等,这与聊天内容相同

在我的聊天中,每个客户端每两分钟向服务器发送一些PING消息。所以,如果5分钟过去了,没有收到PING,服务器会将用户计算为[脱机]

如果您害怕欺骗用户,这些用户对您的客户端进行反向工程,并可能通过欺骗给系统带来严重麻烦,那么您必须做两件事:

使服务器检查是否给定 用户订单有效 实现bot检测。检查是否 用户使用一些命令执行一些操作 恒定时间间隔或如果用户 在英语中使用有限的单词 聊天等。 我希望这篇文章至少能给你一些启示

服务器逻辑的示例如下所示:

[WebMethod]
    string LoginUser(string login, string pwd)
        {
            if( dal.IsCorrectUser(login,pwd) )
            {
                string token = dal.MakeSession(login);
                return string;
            }

            return "-1";
        }

[WebMethod]
    bool UserOrder(string token, string order)
        {
            if( !dal.SessionExist(token) )
            {
                return false;
            }

            int userId = dal.GetUserBySession(token);
            if(! dal.ValidOrderForUser(userId,order) )
            {
                dal.RegisterWrongOrder(userid,order); // For cheaters-detecting purposes
                return false;
            }

            return dal.ExecuteUserOrder(userId, order);
        }
实际上,您可以按用户顺序发送字符串或任何可序列化对象

[Serializable]
struct UserOrder
{
  int unitId;
  int Order;
}

所有样品均为c。只是为了证明逻辑。

忽略所有权利和内容。基本上这个想法和我说的一样,通过使用字符串和命令?有关于这个的简单例子吗?让服务器检查给定的用户订单是否有效,您可以使用我制作的在线示例。假设您正在使用ASP.NET web服务作为服务器端: