簡體   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