Java - 从套接字读取?

4 java sockets client

所以我只是尝试从套接字读取文本,我做了以下事情:

import java.io.*;
import java.net.*;

public class apples{
    public static void main(String args[]) throws IOException{
        Socket client = null;
        PrintWriter output = null;
        BufferedReader in = null;
        try {
               client = new Socket("127.0.0.1", 2235);
               output = new PrintWriter(client.getOutputStream(), false);
               in = new BufferedReader(new InputStreamReader(client.getInputStream()));

               while (true) {
                       System.out.println("Line: " + client.getOutputStream());
               }
        }
        catch (IOException e) {
            System.out.println(e);
        }
        output.close();
        in.close();
        client.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

这打印出奇怪的数字和类似的东西:

java.net.SocketOutputStream@316f673e
Run Code Online (Sandbox Code Playgroud)

我不太确定所有的Java函数和东西,那么如何将输出打印为文本?

gal*_*hen 5

看着:

while (true) {
     System.out.println("Line: " + client.getOutputStream());
}
Run Code Online (Sandbox Code Playgroud)

getOutputSteam()返回表示流的对象.您可以使用此对象通过流发送数据.这是一个例子:

BufferedOutputStream out = new BufferedOutputStream(this._socket.getOutputStream());
out.write("hello");
out.flush();
Run Code Online (Sandbox Code Playgroud)

这将通过套接字发送消息"hello"

要读取数据,您将使用输入流

让我指出 - 这是您正在创建的客户端.您还需要创建一个服务器.使用java的ServerSocket类创建服务器

编辑:您想在java中编写客户端/服务器应用程序.您需要实现2个进程:客户端和服务器.服务器将侦听某个端口(使用ServerSocket).客户端将连接到该端口,并发送消息.

您需要了解的第一个对象是ServerSocket.服务器代码:

ServerSocket s = new ServerSocket(61616);    // this will open port 61616 for listening
Socket incomingSocket = s.accept();    // this will accept new connections
Run Code Online (Sandbox Code Playgroud)

s.accept方法是阻塞 - 它等待传入连接,并且只有在接受连接后才进入下一行.它创建一个Socket对象.对于此套接字对象,您将设置输入流和输出流(以发送/接收数据).

在客户端:

Socket s = new Socket(serverIp, serverPort);
Run Code Online (Sandbox Code Playgroud)

这将打开服务器的套接字.你的情况下ip将是"127.0.0.1"或"localhost"(本地机器),端口将是61616.

您将再次设置输入/输出流,以发送/接收消息

如果要连接到已存在的服务器,则只需要实现客户端

你可以在网上找到很多例子