我正在用 C# 做一些简单的套接字编程。我试图通过从客户端控制台读取用户名和密码、将凭据发送到服务器并从服务器返回身份验证状态来对用户进行身份验证。基本的东西。我的问题是,如何确保数据采用服务器和客户端都期望的格式?
例如,这是我在客户端读取用户凭据的方式:
Console.WriteLine("Enter username: ");
string username = Console.ReadLine();
Console.WriteLine("Enter plassword: ");
string password = Console.ReadLine();
StreamWriter clientSocketWriter = new StreamWriter(new NetworkStream(clientSocket));
clientSocketWriter.WriteLine(username + ":" + password);
clientSocketWriter.Flush();
在这里,我在客户端用冒号(或其他符号)分隔用户名和密码。在服务器上,我只是使用“:”作为标记来拆分字符串。这行得通,但似乎有点……不安全。不应该有某种分隔符标记在客户端和服务器之间共享的分隔符令牌,所以我不必像这样硬编码它吗?
服务器响应也是类似的事情。如果身份验证成功,我如何以客户端期望的格式发回响应?我会简单地发送一个“SUCCESS”或“AuthSuccessful=True/False”字符串吗?我如何确保客户端知道服务器发送数据的格式(除了将其硬编码到客户端中)?
我想我要问的是如何设计和实现应用程序级协议。我意识到它对您的应用程序来说是独一无二的,但是程序员通常使用的典型方法是什么?此外,您如何保持格式一致?我也非常感谢有关此问题的文章的链接。