带数据库的Java套接字

带数据库的Java套接字,java,mysql,database,sockets,jdbc,Java,Mysql,Database,Sockets,Jdbc,我有一个关于Java和网络的有趣问题 我正在创建一个基本的聊天程序,它只用于学习目的。现在,我已经正确地将客户端连接到服务器,并来回发送文本。那很好。然而,我遇到了一个问题 假设我在某个远程服务器上有一个数据库。该数据库将包含即时消息程序的登录信息、联系人列表信息等。这意味着当客户机执行某些操作时,我需要对数据库执行查询。显然,我知道客户端不应该包含连接字符串,也不应该有任何访问数据库的权限 我的问题是:为了与多个潜在客户聊天,最好采用客户机-服务器体系结构,但也要采用通过网络发送数据的方法,以

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

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

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

我的问题是:为了与多个潜在客户聊天,最好采用客户机-服务器体系结构,但也要采用通过网络发送数据的方法,以便在服务器端进行查询,这样做的最佳方式是什么

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


谢谢。

一个解决方案是设置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>

你好,世界
从myTable中选择*

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

一个解决方案是设置tomcat并使用Javaservlet,尽管从技术上讲这是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>

你好,世界
从myTable中选择*

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

不久前,我像你一样使用TCP连接(主要是在游戏和聊天应用程序中),但我认为它不适合你的要求,除了游戏。我非常喜欢网络服务。它们通过HTTP而不是TCP进行通信,并使用GET、POST和PUT方法来确认您的尝试。自己建立一个运行的java Web服务并进行尝试非常简单。尝试在应用程序中使用XML或Json

关于jersey Web服务的精彩教程:

稍后,当您掌握了它之后,您可以像平常一样轻松地将数据库连接与您的Web服务绑定在一起


祝你好运

不久前,我和你一样使用TCP连接(主要是在游戏和聊天应用程序中),但我认为它不适合你的要求,除了游戏。我非常喜欢网络服务。它们通过HTTP而不是TCP进行通信,并使用GET、POST和PUT方法来确认您的尝试。自己建立一个运行的java Web服务并进行尝试非常简单。尝试在应用程序中使用XML或Json

关于jersey Web服务的精彩教程:

稍后,当您掌握了它之后,您可以像平常一样轻松地将数据库连接与您的Web服务绑定在一起


祝你好运

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

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

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


  • 这里没有一个正确的答案;如果您想进一步探索,我建议您看看一些流行聊天工具(如IRC和jabber)的体系结构。

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

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

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


  • 这里没有一个正确的答案;如果您想进一步了解,我建议您查看一些流行聊天实现(如IRC和jabber)的体系结构。

    如上所述,我确实计划使用服务器接收请求。我只是对有tw感到困惑