我希望能够通过网络发送简单的消息。任何消息。如何通过网络发送消息?
具体来说,我想要一台运行时间一直很长的服务器,以及一台可以连接到服务器并按需与服务器通信的客户端。
我不知道从哪里开始。通过网络发送消息的最简单方法是什么?
我希望能够通过网络发送简单的消息。任何消息。如何通过网络发送消息?
具体来说,我想要一台运行时间一直很长的服务器,以及一台可以连接到服务器并按需与服务器通信的客户端。
我不知道从哪里开始。通过网络发送消息的最简单方法是什么?
本教程Reading from and Writing to a Socket开始,你可以用它采用了ServerSocket像这样
public static void main(String[] args) throws Exception {
// create socket
int port = 4444;
ServerSocket serverSocket = new ServerSocket(port);
System.err.println("Started server on port " + port);
// repeatedly wait for connections, and process
while (true) {
// a "blocking" call which waits until a connection is requested
Socket clientSocket = serverSocket.accept();
System.err.println("Accepted connection from client");
// open up IO streams
BufferedReader in = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream());
// waits for data and reads it in until connection dies
// readLine() blocks until the server receives a new line from
// client
String s;
try {
while ((s = in.readLine()) != null) {
out.println(s);
out.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
// close IO streams, then socket
System.err.println("Closing connection with client");
out.close();
in.close();
clientSocket.close();
}
然后你可以使用“远程登录本地主机4444”,以测试它,或者写一个完整的客户端简单echo server启动;也许就像上面教程中的客户端一样。
现在我该如何让客户接洽? XD – user3170707
@ user3170707 [Here](http://docs.oracle.com/javase/tutorial/networking/sockets/examples/EchoClient.java)。 –
好的,这个问题真的很开放。首先有几个问题需要回答:您是要实现自己的服务器还是使用现有的技术。 JMS-API显然将成为后一种情况的起点。有很多实现提供者,Glassfish本身的参考实现,HornetQ独立或作为JBoss实例的一部分,仅举两个例子。使用JMS发送消息在理解一些基本概念时非常简单,它们可以同时包含文本和二进制数据。 使用现有解决方案的另一种方法是实现您的客户端可以连接到的WebService,这将是基于REST的Web服务的JAX-RS。这种方法也是更独立于平台的,在撰写本文时,我不知道支持JMS的Android客户端的库,并且大多数其他编程语言都完全支持基于REST的服务。但是,如果您不想使用任何现有的protocoll,则必须坚持自己的服务器和客户端实现。所以这将是所提到的套接字编程。好吧,这个任务并不容易:你的服务器不会同时处理多个客户端,在另一个请求完成之前不会阻止一个请求,而是提供一些机制来授权客户端访问服务器的应用程序。当您同时处理多个客户端时,您将可以共享您的客户端之间共享的资源,以便对这些资源的访问必须同步,这些主题与并发编程相关,并且是其自己的一个安静的有趣的信息技术领域。您的应用程序设计的其他相互影响的方面可能是使用支持JNDI进行资源绑定或实施CDI容器的决策,以便客户可以轻松地调整您的消息交换格式。这很有趣,但不是一天内的任务。 ;)
欢迎来到StackOverflow http://stackoverflow.com/questions/how-to-ask – gtgaxiola
我投了这个问题,这里是为什么:这实际上是一个非常明确和谨慎的问题。他要求一个非常简单的事情,“我如何通过网络发送消息”可能有很多方法可以做到这一点,但这很好,只要以单一方式回答就可以解决问题。 –
服务器应该是多线程的,不一定要但可能更容易,并且应该始终监听新的连接。当它收到一个新的连接时,将它放到一个新的线程中,去做它的业务,然后再听另一个连接。在那里寻找教程,你会发现它。通过练习和尝试新技术,你会发现哪些是有效的,哪些没有。我上面列出的选项仅仅是解决您的项目的众多解决方案之一。祝你好运:) –