[英]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.