繁体   English   中英

TCP套接字通信

[英]TCP socket communication

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

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

现在,我想创建一个线程,该线程将循环并从套接字读取数据,以便一旦另一侧的用户向我发送了一个字符串,我将从套接字中提取数据( 或者称为数据包?对不起,我是新本 ),并更新文本框添加从插座( 或包中的额外字符串?)。

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

任何帮助表示赞赏! 我知道这有点长,但是我进行了很多搜索并且不了解( 我看到了类似PrintWriter的内容,但听不懂 )。

您将必须执行以下操作;

 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM