当前位置: 首页 > 知识库问答 >
问题:

使用java nio的简单客户端-服务器示例

楮法
2023-03-14

请你给我举一个localhost的客户端和服务器使用java nio通信的小例子?我需要了解它是如何工作的。例如1)客户端需要连接,客户端连接客户端发送“你好,我是客户端”。2)服务器接受,服务器接收来自客户端的消息,服务器响应“你好,我是服务器”3)客户端发送“你好,服务器”4)服务器发送“你好,客户端”。

我不需要服务器一次处理多个客户端,我需要了解的是客户端和服务器之间具有多个消息的连接是如何发生的。

共有2个答案

冯通
2023-03-14

不太确定如果不打算处理多个连接,为什么需要使用nio。我认为使用它们没有意义。

好吧,在这里:让我知道这是否有效。

服务器代码:

public class Server {

ServerSocket socket;
Socket listener;

public Server(int port) throws IOException {
    socket = new ServerSocket(port);
}


public void connect() throws IOException{
    listener = socket.accept();
}

public String read() throws IOException{

    byte[] temp = new byte[1024];

    int bytesRead = 0;

    try(InputStream input = listener.getInputStream()){
        bytesRead = input.read(temp);
    }

    return new String(temp,0,bytesRead,"ASCII");
}

public void write(String data) throws IOException{
    byte[] temp = new byte[1024];

    try(OutputStream out = listener.getOutputStream()){
        out.write(data.getBytes());
        out.flush();
    }
}

public void close(){
    socket.close();
}

}

客户代码:

public class Client{

Socket client;

InetSocketAddress addr;

public Client(String ip, int port) throws IOException{

    client = new Socket();
    addr = new InetSocketAddress(ip,port);

}


public void connect() throws IOException{
    client.connect(addr);
}

public String read() throws IOException{

    byte[] temp = new byte[1024];

    int bytesRead = 0;

    try(InputStream input = client.getInputStream()){
        bytesRead = input.read(temp);
    }

    return new String(temp,0,bytesRead,"ASCII");
}

public void write(String data) throws IOException{
    byte[] temp = new byte[1024];

    try(OutputStream out = client.getOutputStream()){
        out.write(data.getBytes());
        out.flush();
    }
}

public void close(){
    client.close();
}

}

现在您所要做的就是在服务器上调用连接(),然后在客户端上连接()并编写和发送您想要的消息。

做完后别忘了给我打电话。

还要注意,您将需要一些机制来告诉服务器和客户端每条消息将持续多长时间。或者,您可以指定一个结束字符,告诉客户端/服务器消息已结束。

服务器中的一次发送不一定等于客户端中的一次读取,反之亦然。你必须想出该怎么做。

钱季
2023-03-14

您可以使用以下链接访问您的需求https://www.geeksforgeeks.org/socket-programming-in-java/ https://www.journaldev.com/741/java-socket-programming-server-client

 类似资料:
  • 我已经使用java nio创建了一个客户端-服务器应用程序,它工作正常,但我的问题是,当服务器有许多连接到服务器的客户端时,服务器会响应错误的客户端,而不是请求客户端。例如,如果客户端A请求第一个人的信息,服务器将第一个人的信息返回给客户端B而不是客户端A。我已经尝试同步对象,但仍然无法正常工作,可能是什么问题。这是我的服务器示例代码

  • 问题内容: 我做一个简单的, 没有线程 客户端 - 服务器 进行GUI有两个一个按钮程序 服务器 和 客户 端。当 客户端 按下按钮时,它将按钮上的文本更改为 “ C” 并发送到 服务器 “ C” 字符串,因此 服务器 端的按钮将文本更改为 “ C” 。 服务器的 工作方式与 客户端 相似,但是发送的是 “ S” 而不是 “ C” 。他们轮流工作:轮到 客户时 , 服务器 客户端 始终首先启动。

  • 问题内容: 我想使用asyncio协程而不是多线程来重新实现我的代码。 server.py client.py 我知道有一些适当的异步网络库可以做到这一点。但是我只想在这种情况下使用asyncio核心库,以便对其有更好的了解。 仅在处理客户端定义之前添加async关键字真是太好了……这里的一段代码似乎有效,但是我仍然对实现感到困惑。 asyncio_server.py 如何以最佳方式和使用异步aw

  • 问题内容: 我正在尝试编写一个简单的Java http客户端,该客户端仅打印出服务器响应的一行。我的问题是服务器没有响应。这是我所拥有的,正在编译并且没有明显错误地运行,只是在键入主机名(例如“ www.google.com”)后挂起: 有什么建议?请注意,这假设存在一个“ index.html”-即使为true,它仍会挂起。 问题答案: 我认为我可以通过对代码进行少量更改来重现该问题,因此现在它

  • 本文向大家介绍php简单socket服务器客户端代码实例,包括了php简单socket服务器客户端代码实例的使用技巧和注意事项,需要的朋友参考一下 本篇文章分享一个简单的socket示例,用php。实现一个接收输入字符串,处理并返回这个字符串到客户端的TCP服务。 产生一个 socket 服务端 提示:你应该使用你的命令提示符来运行上面这段代码。理由是因为这里将产生一个服务器,而不是一个Web页面

  • 问题内容: 有人可以给我提供一个非常简单的websocket客户端使用示例吗? 我想连接到websocket(ws://socket.example.com:1234),发送消息(添加频道)并收听消息。所有消息(已发送和已收听)均为JSON格式。 顺便说一句,这个库最适合进行简单的websocket通信吗? 问题答案: 我在这里找到了一个很好的例子: http://www.programmingf