TCP套接字通信

时间:2010-05-09 15:54:19

标签: java sockets tcp stream

我在java中创建一个聊天。 我在一个对象内部有一个方法(onMouseRelease),它创建一个tcp服务器并等待这样的套接字:

 ServerSocket server = new ServerSocket(port);
 Socket channel = server.accept();

现在我想创建一个循环并从套接字读取数据的线程,这样一旦另一端的用户发给我一个字符串,我将从套接字中提取数据(或者它被调用数据包?抱歉,我是新手并更新文本框以从套接字添加附加字符串(或数据包?)。

我不知道如何从套接字( / packet )读取(提取)信息,然后将其更新为名为userOutput的JTextArea。以及如何将字符串发送到另一个客户端,以便它还可以读取新数据并更新其JTextArea。 据我所知,对于双面TCP通信,您需要一台计算机来托管服务器 另一个连接(作为客户端),一旦设置了连接,客户端也可以从套接字接收新信息。真的吗?请告诉我怎么做。

任何帮助表示赞赏!我知道这有点长,但我已经搜索了很多并且不理解它(我看到了类似PrintWriter的东西,但却无法理解)。

1 个答案:

答案 0 :(得分:2)

你必须做这样的事情;

 InputStream in = new BufferedInputStream(channel.getInputStream());

然后,您可以使用循环从套接字读取字符;

char ch;

 while (!finished) {

    ch = in.read(); //read from socket
    if(ch = -1) {
       //nothing left to read
       finished = true;
    }
    else {
       //do something with ch
    }
 }

如果你愿意,我可以继续吗?

假设我们将传入的字符保存到名为 input 的字符串中,以更新您要调用的文本区域;

textArea.setText(input);

要将文本发送回客户端,您将使用类似的方法来接收,使用输出流;

OutputStream out = new BufferedOutputStream(clientSock.getOutputStream());
out.write(output);