有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mysql Javasocket与数据库

我有一个关于Java和网络的有趣问题

我正在创建一个基本的聊天程序,只用于学习目的。现在,我已经正确地将客户端连接到服务器,并来回发送文本。那很好。然而,我遇到了一个问题

假设我在某个远程服务器上有一个数据库。该数据库将包含即时消息程序的登录信息、联系人列表信息等。这意味着当客户机执行某些操作时,我需要对数据库执行查询。显然,我知道客户端不应该包含连接字符串,也不应该访问数据库

我的问题是:为了与多个潜在客户聊天,最好的方法是什么?同时,最好的方法是通过网络发送数据,以便在服务器端进行查询

这可能是一个简单的答案,但由于某种原因,我在同时发送数据的多个socket/服务器socket上遇到了麻烦

谢谢


共 (2) 个答案

  1. # 1 楼答案

    在这里,您可以采取多种方法:

    1. 如果每个客户机使用一个专用的服务器端线程,该线程将执行所需的DB查询。客户端传入初始登录信息等;在验证这些之后,处理程序线程可以发回客户机所需的联系人列表和其他信息

    2. 另一种方法是没有专用线程。相反,当客户端进行身份验证时,创建某种令牌对象并将其传递给客户端。每次客户端发送消息时,它都会发送令牌。无论服务器上的哪个线程接收到消息+令牌,都可以通过检查令牌来验证客户端

    这里没有一个正确的答案;如果你想进一步探索的话,我建议你看看一些流行聊天工具的架构,比如IRC和jabber

  2. # 2 楼答案

    一种解决方案是设置tomcat并使用java servlet,尽管从技术上讲这是http请求

    听起来你需要写一个服务器。我认为所有的聊天都可以在服务器上进行,所以它不是一个p2p架构,而是一个集线器式的架构。这样,服务器就可以代表客户端访问数据库

    我希望这能回答你的问题,在网络编程方面有一百万种不同的方法:)

    根据注释显示的示例XML消息:

    <XML>
    <msg_header type="chat"/>
    <msg_body>
       hello world
    </msg_body>
    </XML>
    
    <XML>
    <msg_header type="query"/>
    <msg_body>
       SELECT * FROM myTable
    </msg_body>
    </XML>
    

    如果你不想,你甚至不必去那么复杂的地方。或者你可以采用一种广泛使用的标准,比如HTTP(使用TCP/IP,使用套接字),这样你就可以使用Java内置的HTTP处理器来完成这项工作。这取决于你:)