導航:首頁 > 操作系統 > androidsocket視頻教程

androidsocket視頻教程

發布時間:2022-05-24 20:39:39

android Socket通信開發,求詳細過程,附加註釋,謝謝

服務端往Socket的輸出流裡面寫東西,客戶端就可以通過Socket的輸入流讀取對應的內容。Socket與Socket之間是雙向連通的,所以客戶端也可以往對應的Socket輸出流裡面寫東西,然後服務端對應的Socket的輸入流就可以讀出對應的內容。
Socket類型為流套接字(streamsocket)和數據報套接字(datagramsocket)。
Socket基本實現原理
TCP與UDP
1基於TCP協議的Socket
伺服器端首先聲明一個ServerSocket對象並且指定埠號,然後調用Serversocket的accept()方法接收客戶端的數據。accept()方法在沒有數據進行接收的處於堵塞狀態。(Socketsocket=serversocket.accept()),一旦接收到數據,通過inputstream讀取接收的數據。
客戶端創建一個Socket對象,指定伺服器端的ip地址和埠號(Socketsocket=newSocket("172.168.10.108",8080);),通過inputstream讀取數據,獲取伺服器發出的數據(OutputStreamoutputstream=socket.getOutputStream()),最後將要發送的數據寫入到outputstream即可進行TCP協議的socket數據傳輸。

❷ 如何自學 Android 編程

很多朋友一上手就開始學習Android,似乎太著急了一些。Android應用程序開發是以java語言為基礎的,所以沒有扎實的Java基礎知識,只是機械的照抄別人的代碼,是沒有任何意義的。那麼Java學到什麼程度才算是過關呢?我個人認為至少要掌握以下兩個方面的內容:

a) Java基礎語法:具體的知識點列表可以在這里下載:《Java知識點列表》V1.0。這部分內容沒有討價還價的餘地,必須爛熟於胸。至於具體的學習方法,可以看書或者是看視頻,但是關鍵是要多加練習,無論是書上的練習還是視頻裡面的練習,都需要仔仔細細的完成;

b)設計模式:由於在Android系統的框架層當中,使用了大量的設計模式,如果沒有這個方面的知識,對於Android的理解就會大打折扣。設計模式的種類非常之多,一個一個的全部掌握,是不現實的,必須首先掌握面向對象的基礎設計原則,有了這些基礎原則的支持,就可以舉一反三。這部分內容可以在《Effective Java》和《Agile.Software.Development:Principles,Patterns.and.Practices》這兩本書中找到。

2.Linux基礎知識

大家都知道,Android系統的基礎是Linux操作系統。在開發過程當中,我們也需要使用到一些Linux命令。所以說一些Linux的基礎知識是必須的(話說現在的程序員,不懂Linux都不好意思跟人家打招呼),推薦大家看看《鳥哥的私房菜》這本書,寫的相當不錯;

3.資料庫基礎知識

這個比較簡單,就是一個增刪改查的資料庫操作,可以看一下這本書:《SQL編程練習與解答》

4.網路協議

至少需要學習兩種基礎的協議,HTTP協議與Socket協議;

5.Android基礎知識

有了以上的鋪墊,再來看Android,是不是覺得輕鬆了很多呢?至於基礎知識的學習順序,最好的方法就是按照Android SDK幫助文檔當中的Dev Guide裡面的順序,我的《Android視頻教程》也基本上是按照這個順序錄制的;

6.伺服器端開發知識

由於很多Android應用程序都需要伺服器端的支持,所以掌握一些伺服器端開發知識還是非常有必要的。至於選擇哪一種伺服器端知識進行學習,就比較麻煩了,因為技術的種類實在是太多了:

a)Java EE:就是上面郵件當中所提到的SSH—Struts+Spring+Hibernate。這種技術的優點的功能完整、強大,已經使用了很多年,而且既然大家已經非常熟悉Java了,那麼學習SSH看起來也順理成章。但是使用這種技術開發伺服器端程序,非常麻煩。即使是一些簡單的功能,也可能需要大量的代碼和配置文件來實現;

b)PHP:簡單易學,開發快速。但是我們需要多學一種語言,是否得不償失,就要大家自己判斷了;

c).NET:這項技術的特點和Java EE差不多,但是要想掌握.NET,則需要掌握c#,也是個麻煩的事情;

d)ruby on rails:這是我個人最喜歡的伺服器端技術,簡潔,優雅,寥寥幾行代碼,就可以實現很復雜的功能,但是這需要Ruby語言知識作為基礎;

至於選擇哪一種技術,就看大家自己的判斷了。

夢想:要成為一個專業的Android開發者,以上的這些知識都必不可少。看起來好像很多,多的可怕。所以還是那句話--「耐心,耐心很重要」。

學習一門專業要很長時間啊,耐心很重要,很多朋友也來問我C4D,能感覺到大家都想急著學會,其實要有長時間的積累才能有長遠進步,Android開發,最近公司要做程序,也涉及到,如果UI設計師的我學會了Android,是不是可以獨立做開發了。

❸ 做一個安卓app實現聊天功能需要什麼知識有什麼教學視頻嗎

Android製作聊天程序需要用到Socket通信和P2P,相對而言即時通訊軟體是很難開發的,一個團隊(10人)可能需要開發半年,當然你可以僅僅用SOCKET實現簡單的通信,在內網聊天,相關內容比較多,可以網路Android Socket即時通訊。

❹ android如何與手機進行通信(Socket連接)

其實跟電腦差不多了,android里調用socket的方法,拿到socket後就可以發送數據並接收數據。

我最近正在做android方面的通信,真的想把完整的代碼都給你,可是沒辦法,公司機密。。

給你我的socket連接類吧。。。

package sean.socket;

///////////把MyType的一些方法替換成Writer的方法
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

import sean.Sysout;
import sean.business.BusinessCenter;
import sean.business.LoginManager;
import sean.format.MyType;
import sean.io.Reader;
import sean.transfer.BytesBuffer;
import sean.transfer.DataCenter;

public class SocketThread implements Runnable {

String Server = "";
int Port = 0;
static Socket cs = null;
// Thread ioThread=null;
static boolean bool_SocketThread = false;
static OutputStream output = null;

public SocketThread(String server, int port) {
Server = server;
Port = port;
bool_SocketThread = true;
}

@Override
public void run() {
// TODO Auto-generated method stub
while (bool_SocketThread) {
try {
// if (cs == null) {
DataCenter.setBool_Login(false);// 設置登錄失敗
Sysout.println("正在嘗試連接ClientSocket...", Sysout.TempOutDebug);
cs = new Socket(InetAddress.getByName(Server), Port);
if (cs != null) {
Sysout.println("ClientSocket連接成功!__" + cs,
Sysout.TempOutDebug);
cs.setKeepAlive(true);//讓socket保持活動狀態

InputStream input = cs.getInputStream();
output = cs.getOutputStream();
BusinessCenter.sendLoginData();

BytesBuffer bBuffer = new BytesBuffer();
byte[] Buffer = new byte[1024];
int ReadBytes = input.read(Buffer);
while (ReadBytes != -1) {
Sysout.println("已讀取" + ReadBytes + "個位元組到緩沖區",
Sysout.TempOutDebug);
byte[] b = new byte[ReadBytes];
b = MyType.BytesInsertToBytes(Buffer, b, 0);
Reader r = new Reader(b);
Sysout.println(r.toString() + "____ReadBytes=="
+ ReadBytes, Sysout.TempOutDebug);
bBuffer.InsertToBuffer(Buffer, ReadBytes);
ReadBytes = input.read(Buffer);
}
} else {
Sysout.printException("ClientSocket連接失敗!請確認網路正常且伺服器已開啟。");
}
// }
// 執行到這里說明inputstream.read()已中斷,說明socket已斷開連接
// cs=null;
LoginManager.setLoginValue(-1);// 業務中心登錄注銷,即登錄管理器注銷登錄
DataCenter.setBool_Login(false);// 數據中心登錄注銷
Sysout.printException(cs + "已斷開。");
Thread.sleep(2 * 1000);// 睡眠2秒後繼續循環

// try {
// // 判斷ClientSocket是否已斷開
// cs.sendUrgentData(0);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// Sysout.printException("ClientSocket已斷開,重新連接。"+e);
// cs.close();
// cs = null;
// }
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
Sysout.printException("SocketThread.java====解析伺服器名稱發生異常!" + e);
// e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
Sysout.printException("SocketThread發生IO異常,異常消息:" + e);
try {
if (cs != null) {
Sysout.println("准備關閉" + cs, Sysout.TempOutDebug);
cs.shutdownOutput();
cs.shutdownInput();
cs.close();
cs = null;
output = null;
LoginManager.setLoginValue(-1);// 業務中心登錄注銷,即登錄管理器注銷登錄
DataCenter.setBool_Login(false);// 數據中心登錄注銷
Sysout.println(cs + "已關閉。", Sysout.TempOutDebug);
}
try {
Thread.sleep(5000);
} catch (InterruptedException e2) {
// TODO Auto-generated catch block
Sysout.printException("SocketThread.java====線程睡眠異常!!"
+ e2);
// e2.printStackTrace();
}
String ExceptionInfos=e.toString();
if(ExceptionInfos.endsWith("Connection refused")){
stopSocketThread();
}
} catch (IOException e1) {
// TODO Auto-generated catch block
Sysout.printException(cs + "關閉發生異常::" + e1);
// e1.printStackTrace();
try {
Thread.sleep(5000);
} catch (InterruptedException e2) {
// TODO Auto-generated catch block
Sysout.printException("SocketThread.java====線程睡眠異常!!"
+ e2);
// e2.printStackTrace();
}
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}// while(bool_SocketThread)
Sysout.println("SocketThread已停止。", Sysout.TempOutDebug);
}

public static Socket getSocket() {
return cs;
}

// public void setBool(boolean bool0) {
// bool_SocketThread = bool0;
// }

public static OutputStream getOutputStream() {
return output;
}

public static void stopSocketThread() {
try {
// 停止SocketThread線程,必須先把循環的標志bool_SocketThread置為false,否則可能繼續循環,重新建立socket連接
bool_SocketThread = false;
// 關閉socket
if (cs != null) {
cs.shutdownOutput();
cs.shutdownInput();
cs.close();
cs = null;
output = null;

Sysout.println("ClientSocket已被強制關閉。");
// LoginManager.setLoginValue(-1);// 業務中心登錄注銷,即登錄管理器注銷登錄
// DataCenter.setBool_Login(false);// 數據中心登錄注銷
// byte[] lock=LoginActivity.getLock();
// synchronized(lock){
// lock.notify();
// }
}
} catch (IOException e) {
// TODO Auto-generated catch block
Sysout.printException("強制關閉" + cs + "發生異常::" + e);
// e.printStackTrace();
}
}

}

必須先在android里啟動一個服務,由服務去啟動這個socket線程,因為如果是UI去啟動的話,頁面會卡住。。。

❺ android socket有幾種方法

/***第一種:客戶端Socket通過構造方法連接伺服器***/
//客戶端Socket可以通過指定IP地址或域名兩種方式來連接伺服器端,實際最終都是通過IP地址來連接伺服器
//新建一個Socket,指定其IP地址及埠號
Socket socket = new Socket("192.168.0.7",80);
/***Socket 客戶端 一些常用設置***/
//客戶端socket在接收數據時,有兩種超時:1.連接伺服器超時,即連接超時;2.連接伺服器成功後,接收伺服器數據超時,即接收超時
//*設置socket 讀取數據流的超時時間
socket.setSoTimeout(5000);
//發送數據包,默認為false,即客戶端發送數據採用Nagle演算法
//但是對於實時交互性高的程序,建議其改為true,即關閉Nagle演算法,客戶端每發送一次數據,無論數據包大小都會將這些數據發送出去
socket.setTcpNoDelay(true);
//設置客戶端socket關閉時,close()方法起作用時延遲1分鍾關閉,如果1分鍾內盡量將未發送的數據包發送出去
socket.setSoLinger(true, 60);
//設置輸出流的發送緩沖區大小,默認是8KB,即8096位元組
socket.setSendBufferSize(8096);
//設置輸入流的接收緩沖區大小,默認是8KB,即8096位元組
socket.setReceiveBufferSize(8096);
//作用:每隔一段時間檢查伺服器是否處於活動狀態,如果伺服器端長時間沒響應,自動關閉客戶端socket
//防止伺服器端無效時,客戶端長時間處於連接狀態
socket.setKeepAlive(true);
/*** Socket客戶端向伺服器端發送數據 ****/
//客戶端向伺服器端發送數據,獲取客戶端向伺服器端輸出流
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
//代表可以立即向伺服器端發送單位元組數據
socket.setOOBInline(true);
//數據不經過輸出緩沖區,立即發送
socket.sendUrgentData(65);//"A"
//向伺服器端寫數據,寫入一個緩沖區
//註:此處字元串最後必須包含「\r\n\r\n」,告訴伺服器HTTP頭已經結束,可以處理數據,否則會造成下面的讀取數據出現阻塞
//在write()方法中可以定義規則,與後台匹配來識別相應的功能,例如登錄Login()方法,可以寫為write("Login|test,123 \r\n\r\n"),供後台識別;
bw.write("Login|test,123 \r\n\r\n");
//發送緩沖區中數據,必須有
bw.flush();

/*** Socket客戶端讀取伺服器端響應數據 ****/
//socket.isConnected代表是否連接成功過
if((socket.isConnected() == true) && (socket.isClosed() == false)){//判斷Socket是否處於連接狀態
//客戶端接收伺服器端的響應,讀取伺服器端向客戶端的輸入流
InputStream is = socket.getInputStream();
//緩沖區
byte[] buffer = new byte[is.available()];
//讀取緩沖區
is.read(buffer);
//轉換為字元串
String responseInfo = new String(buffer);
//日誌中輸出
Log.i("TEST", responseInfo);
} //關閉網路
socket.close();
/***第二種:通過connect方法連接伺服器***/
Socket socket_other = new Socket();
//使用默認的連接超時
socket_other.connect(new InetSocketAddress("192.168.0.7",80));
//連接超時2s
socket_other.connect(new InetSocketAddress("192.168.0.7",80),2000);
//關閉socket
socket_other.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

❻ android里怎樣hook socket過程

/***第一種:客戶端Socket通過構造方法連接伺服器***/ //客戶端Socket可以通過指定IP地址或域名兩種方式來連接伺服器端,實際最終都是通過IP地址來連接伺服器 //新建一個Socket,指定其IP地址及埠號 Socket socket = newSocket("192.168.0.7",。可以看看安卓巴士的教程:http://www.apkbus.com/thread-463776-1-1.html

❼ android如何通過socket上傳視頻或者音頻先謝過啦

這個實驗我是用兩台pc做的實驗,沒有用真機,用的是emule,總體效果感覺可以
大致的思路是這樣的
socket的通信分兩種一種是 tcp另一種是udp,這個之間的通信方式我就不多說了,
主要的重點是許可權的android.premisson,INTERNET

tcp
new Socket();
......

udp
new DatagramSocket();
......

❽ 如何學習Android開發

下面就由福州卓躍教育具體介紹Android應用程序開發學習的路線圖,先熟悉Java SE編程,能比較熟練的使用Java語言進行編程,熟悉Java語言語法特點,熟悉Java IO、Java線程、網路編程、XML處理等。
1.Java基礎
Android應用程序開發是以Java語言為基礎的,所以沒有扎實的Java基礎知識,只是機械的照抄別人的代碼,是沒有任何意義的。
2.Linux基礎知識
Android系統的基礎是Linux操作系統。在開發過程當中,我們也需要使用到一些Linux命令。所以說一些Linux的基礎知識是必須的;
3.資料庫基礎知識
這個比較簡單,就是一個增刪改查的資料庫操作,可以看一下這本書:《SQL編程練習與解答》
4.網路協議
至少需要學習兩種基礎的協議,HTTP協議與Socket協議;
5.Android基礎知識
按照Android SDK幫助文檔當中的Dev Guide裡面的順序,《Android視頻教程》也基本上是按照這個順序錄制的;
6.伺服器端開發知識

❾ 如何用socket實現android手機與手機之間的通信

有兩種方案: 1、在PC機上建立伺服器,手機與手機之間的通信通過伺服器進行中轉 2、一部手機作為伺服器,另一部手機作為客戶端接入該手機 一般是第一種方案 示例代碼: 1、pc端: serverSocket=new ServerSocket(5648); //在5648埠進行偵聽 Socket sk = serverSocket",5648);//連接socket 3、消息輸入輸出: pw=new PrintWriter(socket.getOutputStream()); //消息輸出 pw.println("發送消息"); pw.flush(); br=new BufferedReader(new InputStreamReader(socket.getInputStream())); //消息接收 while((str=br.readLine())!=null){ //接收消息 }

閱讀全文

與androidsocket視頻教程相關的資料

熱點內容
三台伺服器配置IP地址 瀏覽:171
如何用命令方塊連續對話 瀏覽:275
win7linux共享文件夾 瀏覽:302
命令符打開本地服務 瀏覽:597
android應用程序源碼 瀏覽:699
安卓開發工程師簡歷怎麼寫 瀏覽:57
熱水器水量伺服器是什麼意思 瀏覽:115
stk衛星編譯 瀏覽:477
對後台程序員的要求 瀏覽:759
ios大文件夾圖標 瀏覽:624
生的計劃pdf 瀏覽:711
oppoa93加密便簽在哪查找 瀏覽:21
兩個數字的加減乘除運算編程 瀏覽:227
給手機加密碼忘記了怎麼辦 瀏覽:601
單片機運算符 瀏覽:297
移動端微信商城源碼 瀏覽:443
編程貓下一個背景在哪裡 瀏覽:359
javaclasstype 瀏覽:240
樂高編程和樂高課的延伸 瀏覽:357
蘋果手機怎麼切換app美國賬號 瀏覽:865