Android實現TCP伺服器

2021-10-22 18:41:16 字數 3668 閱讀 2434

建立socket連線之前,我們首先要獲取本地的ip位址,這樣,才能讓客戶端通過ip位址連線到伺服器

/**獲得ip位址,分為兩種情況,一是wifi下,二是流動網路下,得到的ip位址是不一樣的*/

string getipaddress()

}}}catch

(socketexception e)

}else

if(info.

gettype()

== connectivitymanager.type_wifi)

}else

return null;

}/**

* 將得到的int型別的ip轉換為string型別

* @param ip

* @return

*/string intip2stringip

(int ip)

"android.permission.access_network_state"

/>

"android.permission.internet"

/>

"android.permission.change_wifi_state"

/>

"android.permission.access_wifi_state"

/>

建立乙個子執行緒,在子執行緒中建立socket連線

class

connectthread

extends

thread

}}

建立乙個死迴圈,監聽輸入流來自客戶端的訊息

while

(true)});}

通過輸出流的write()方法將訊息傳送到客戶端

os = socket.

getoutputstream()

; string text=

"我是伺服器"

; os.

write

(text.

getbytes()

);

下面實現通過edittext傳送輸入的內容

fasong.

setonclicklistener

(new

view.onclicklistener()

catch

(ioexception e)}}

).start()

;}else}}

);

注意,由於模擬器的原因,模擬器ip無法作為tcp伺服器被訪問,所以這一部分測試只能在真機上進行。經過測試,伺服器可以正常地和客戶端進行通訊。

這裡偷點懶,放一張介面圖,懶得再截真機測試的了。

"請輸入要傳送的內容"

android:layout_width=

"wrap_content"

android:layout_height=

"wrap_content"

/>

android:text=

"傳送"

android:id=

"@+id/fasong"

android:layout_width=

"wrap_content"

android:layout_height=

"wrap_content"

/>

android:id=

"@+id/text1"

android:layout_width=

"wrap_content"

android:layout_height=

"wrap_content"

android:text=

"\n"

"parent"

"parent"

"parent"

"parent"

/>

<

/linearlayout>

mainactivity

public

class

mainactivity

extends

catch

(ioexception e)}}

).start()

;}else}}

);}/**獲得ip位址,分為兩種情況,一是wifi下,二是流動網路下,得到的ip位址是不一樣的*/

string getipaddress()

}}}catch

(socketexception e)

}else

if(info.

gettype()

== connectivitymanager.type_wifi)

}else

return null;

}/**

* 將得到的int型別的ip轉換為string型別

* @param ip

* @return

*/string intip2stringip

(int ip)

class

connectthread

extends

thread})

;}// 關閉輸入流

// socket.shutdowninput();

/*os.flush();

// 關閉輸出流

socket.shutdownoutput();

os.close();

// 關閉io資源

bufreader.close();

reader.close();

is.close();

socket.close();// 關閉socket

serversocket.close();// 關閉serversocket*/

}catch

(ioexception e)

catch

(exception e)}}

}

android實現tcp客戶端

android網路程式設計之–socket程式設計

android獲得裝置狀態資訊、mac位址、ip位址的方法

android 一步步實現tcp客戶端

TCP伺服器實現epoll併發實現

原始碼在最下方 併發伺服器 tcp伺服器百萬級連線 申請乙個int sockfd socket af inet,sock stream,0 初始化乙個例項sockaddr in struct sockaddr in addr memset addr,0,sizeof struct sockaddr ...

c 實現tcp伺服器 TCP套接字 C實現

udp套接字的介紹見另一篇文章 這篇文章已經介紹了很多基礎的巢狀字的函式,在這裡不做贅述,這篇實驗報告,只介紹udp中沒有的函式 實際上套接字是網際網路應用程式的介面,可以把它理解為你辦公室的門 當你想從你的辦公室給同事傳遞訊息時,你住需要把信放在門口,然後會有人 傳輸層等 會把信放到你的同事的門口...

TCP伺服器模型

迴圈伺服器 迴圈伺服器在同乙個時刻只可以響應乙個客戶端的請求 併發伺服器 併發伺服器在同乙個時刻可以響應多個客戶端的請求 9.1 迴圈伺服器 udp伺服器 udp迴圈伺服器的實現非常簡單 udp伺服器每次從套接字上讀取乙個客戶端的請求,處理,然後將結果返回給客戶機.可以用下面的演算法來實現.sock...