如何创建一个基本的 Java 服务器? [关闭]
Posted
技术标签:
【中文标题】如何创建一个基本的 Java 服务器? [关闭]【英文标题】:How to create a basic Java Server? [closed] 【发布时间】:2011-01-12 08:35:00 【问题描述】:本质上,我想要一个可以连接多个人的基本 Java 服务器,当其中一个连接的客户端(已经用 Obj-c 编码)向它发送数据时,它会将数据发送回给连接的每个人。
我是一个真正的 Java 新手,在可预见的未来我不会需要 Java 来做任何事情,所以我希望尽快摆脱它,而不是从头开始正确地学习 Java。因此,如果有人对此有一些源代码或教程,将不胜感激。
谢谢 :) 奥兹
【问题讨论】:
客户端使用什么样的协议? 投票重新开放 - 所以真的需要弄清楚如何处理可能有几个好答案的问题。 【参考方案1】:这是一个简单的“Knock Knock”服务器,由 Sun 提供:
import java.net.*;
import java.io.*;
public class KnockKnockServer
public static void main(String[] args) throws IOException
ServerSocket serverSocket = null;
try
serverSocket = new ServerSocket(4444);
catch (IOException e)
System.err.println("Could not listen on port: 4444.");
System.exit(1);
Socket clientSocket = null;
try
clientSocket = serverSocket.accept();
catch (IOException e)
System.err.println("Accept failed.");
System.exit(1);
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
String inputLine, outputLine;
KnockKnockProtocol kkp = new KnockKnockProtocol();
outputLine = kkp.processInput(null);
out.println(outputLine);
while ((inputLine = in.readLine()) != null)
outputLine = kkp.processInput(inputLine);
out.println(outputLine);
if (outputLine.equals("Bye."))
break;
out.close();
in.close();
clientSocket.close();
serverSocket.close();
没有比这更简单的了。
【讨论】:
今天早些时候我确实快速浏览了一遍,我在 php 中编写了类似的代码,这对于早期的测试非常有用。目前虽然我正在寻找连接并发送给多个用户,但显然我需要多线程?你知道在你提供的例子中我会怎么做吗? kieser.net/linux/java_server.html - 您只需创建一个处理连接的类并通过 thread() 调用它 什么是KnockKnockProtocol
?
@GalenNare 在official tutorial 中有解释。您可能需要调整 tutorial class【参考方案2】:
Sun 提供了一个简单的教程:
http://java.sun.com/developer/onlineTraining/Programming/BasicJava2/socket.html#server
它从上面的基本单线程开始,并根据需要扩展到使用多个。
【讨论】:
【参考方案3】:尝试使用 Jetty 服务器 API。 http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty 看起来是个不错的起点...
【讨论】:
谢谢!我会看看!唯一的问题是我几乎没有任何 Java 知识,所以我发现很难理解他们的很多内容。我只需要一个 Java 服务器来演示我的客户端。虽然我实际上计划明年根据我正在学习的大学课程学习 Java! 是的,它需要一些 Java 知识,尽管对于简单的基于 Web 的请求/响应场景来说可能非常简单。我认为 Nissan Fan 的回答更适合您的用例。 @IApp - 对于您描述的项目,我不建议使用任何框架(Jetty 是一个框架)。 KISS - 保持简短和简单。 顺便说一句,目前,IDE 对 Web 服务器框架的支持很差。【参考方案4】:我做了一个 Java 程序,它基本上实现了客户端和服务器之间的一种聊天。使用套接字打开将听到传入连接的服务器端口。当有效连接进入时,您应该有一个线程听到它们并调用操作。
【讨论】:
是的,我设法让一个基本的 PHP 套接字服务器工作,但它一次只能连接 1 个客户端。除非是 Actionscript 或 Objective-C,否则我基本上迷路了!【参考方案5】:我将从查看 Java 中的多播开始:
http://java.sun.com/docs/books/tutorial/networking/datagrams/broadcasting.html
【讨论】:
【参考方案6】:您可能需要使用serversocket 类。
【讨论】:
是的,我对此有所了解,但觉得很难理解。不过谢谢:)以上是关于如何创建一个基本的 Java 服务器? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
JAVA开发微信小程序客服,如何让客服使用手机接收用户消息啊?