如何在 java 中通过套接字向服务器发送登录信息

how to send login information to server through socket in java

我正在尝试编写一个 instant messenger ,它有一个 client application 和一个 server application ,它们应该 运行 在每台客户端计算机和服务器上分开。 当然,客户端通过 socket 相互通信。 我将每个客户的信息保存在服务器上。这意味着客户端的应用程序应该将登录信息发送到服务器并等待听到结果。 我想知道将信息发送到服务器的最佳方式是什么?我应该通过相同的 socket 发送它还是什么?

Socket 编程是 java 中的一个有趣话题。它可以使用两种主要方法来编写即时消息程序。

我假设您知道如何对套接字进行编程以及如何使用它的数据流。我只提供即时通讯的登录逻辑

1.服务器-客户端方法

它需要两个不同的程序,例如客户端应用程序和服务器应用程序。服务器端用户登录只能使用此方法执行。可以传输由 json 或 xml 编码的数据。接收到的数据解码为对象。然后就可以识别数据是消息还是服务器的登录信息。考虑以下示例。

  • 创建要传输的数据对象

class 传输数据 {

    private String userName;//user name of sender
    private String password;//password of the sender
    private String toUser;//user name of receiver
    private String type;//message type which is a message or login information
    //message types
    public static final String MESSAGE = "MESSAGE";
    public static final String LOGIN_INFORMATION = "LOGIN_INFORMATION";

    public TransmitData() {
    }

    //add getters and setters here

}
  • 然后转换成xml或json字符串

    <transmit-data> <user-name></user-name> <password></password> <to-user></to-user> <message-type></message-type> </transmit-data>

  • 之后通过套接字连接发送xml数据

  • 在服务器解码消息

  • 识别消息类型并执行后续操作

但是,当服务器离线时,服务器-客户端即时消息将无法使用。所以不建议在局域网中使用。

2。点对点方法

Peer-to-Peer instance messegers 只有一个包含服务器和客户端编码的程序。使用服务器端用户登录时很难开发并且不符合逻辑。但是您可以轻松地将客户端登录添加到 Messenger。可以添加搜索功能并将其他用户添加到地址簿。然后我会在使用时变得更聪明。作为一个优势,它不需要服务器。我觉得在局域网中使用即时通讯工具非常好。