建立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...