一對一Socket簡單聊天的實現

2022-05-11 12:39:58 字數 1671 閱讀 9174

今天終於除錯通了socket一對一的聊天,每次傳送連線請求後,將使用者名稱傳送到socket中去,然後將使用者名稱和新建的socket存到map中,然後根據使用者名稱來確定接收方是誰,以實現一對一的聊天功能。

上圖是我看部落格的時候截下來的圖,這就是大概思路了。具體今天的實現,我寫了乙個介面,上邊有伺服器ip位址,用來連線伺服器。

以及傳送方,接收方,訊息內容。傳送的時候,將這三條資料連線起來,末尾加"\n",以便readline()函式讀取內容。然後傳送訊息。三個按鈕的單擊事件如下所示,介面在後邊會貼出來。

1

//*****************************主要工作********************************

2 socket socket = null

;3 bufferedreader br = null

;4 bufferedwriter bw = null;5

protected

void

connect() catch

(unknownhostexception e1) catch

(ioexception e1)

22try

27 } catch

(ioexception e)

31return

null;32

}333435

@override

36protected

void

onprogressupdate(string... values)

42super

.onprogressupdate(values);43}

44};

45reader.execute();

4647}48

protected

void

login() catch

(ioexception e)

5758}59

protected

void

send() catch

(ioexception e)

7576 }

然後我開了三個安卓模擬器,兩個eclipse,電腦記憶體飆到了百分之八十多,測試完成後趕緊關了,一頓卡,大概如下所示,三個使用者為10001,10002,10003,我讓10001->10002,10002->10003,10003->10001,這樣互相傳送訊息,實現的效果如下圖所示:

然後貼出我的serversocket中的logcat內容,這些訊息是封裝成了json字串來傳送的。

訊息的格式為fromid+"\n"+content+"\n"+toid+"\n",這樣就組成了乙個完整的字串,readline()函式遇到"\n"就會停止,每次將對應的變數解析出來,然後服務端再去傳送訊息就可以了。

好了,有什麼問題還會來這裡補充,(僅供自己學習參考0.0)

Python基礎socket一對一聊天室

伺服器端 coding utf 8 author kele time 2018 12 27 19 13 匯入socket import socket,threading 建立乙個socket物件 server socket.socket socket.af inet,socket.sock stre...

一對一聊天實現步驟

2 在qqchat 中new message,將message中的內容傳送給伺服器oos。問題來了,那麼我怎麼樣取得客戶端的socket呢?把qqclientconserver裡面的s做成靜態的。那麼qqchat 也可以使用了。3 serconclientthread,輸入流ois接收來自qqcha...

python 製作一對一聊天

用到的參考資料 我用的是pyqt5做使用者介面,用 eric6 簡單點,拖拽的,pyqt5 教程 一對一聊天源 首先這兩個方法返回值不同。exec 有返回值,show 沒有返回值。其次這兩個方法的作用也不同。呼叫show 的作用僅僅是將widget及其上的內容都顯示出來,控制權即刻返回給呼叫函式。而...