androidpcsocket
Ⅰ PC伺服器端和android手機客戶端socket通信問題
1. PC伺服器啟用ServerSocket
兩個通信實體在建立虛擬鏈路之前,需要有一方先准備好,主動接受來自其他通信實體的連接請求。
使用ServerSocket對象監聽來自客戶端的Socket連接。
//創建ServerSocket對象
ServerSocket ss = new ServerSocket(30000);
//監聽來自客戶端的請求
while(true){
Socket s = ss.accept();
…
}
如果沒有連接,則將一直處於等待狀態。當接收到連接請求後,獲取消息到輸入流,並保存到文件。
//接收客戶端消息
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String str;
BufferedWriter bw = new BufferedWriter(new FileWriter("D:/ApInfo"+ (i++) +".txt"));
while ((str = in.readLine()) != null) {
System.out.println(str);
bw.write(str);
bw.newLine();
}
2. Android終端使用Socket通信
客戶端使用Socket的構造器連接伺服器,指定伺服器IP和埠號就可以了。
Socket s = new Socket(「192.168.1.100」, 30000);
這樣伺服器端的accept()方法就得到響應,從而向下執行,伺服器端和客戶端就形成了一對互相連接的Socket。再進行通信時就沒有伺服器和客戶端之分了,都是通過輸入輸出流進行通信。
詳細步驟:
採用Handler和TimerTask來定時掃描AP信息並發送給伺服器端。TimerTask規定了到達指定的時間所要進行的任務。
TimerTask task = new TimerTask(){
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
handler傳遞message內容:
Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
// 執行定時器時間到了之後由handler傳遞的任務
break;
}
super.handleMessage(msg);
}
}
接下來掃描AP信息並發送給伺服器端,然後將結果保存。
WifiManager wifiManager=(WifiManager) getSystemService(WIFI_SERVICE);
wifiManager.startScan();
mWifiList = wifiManager.getScanResults();
由WifiManager說明可知,它可以用於處理已配置的網路,當前連接的網路及AP信息的掃描等情況。
向伺服器發送消息:
socket = new Socket("192.168.1.211",30000);
//向伺服器端發送消息
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
out.println(message);
其中message為獲取的AP信息,測試收到的信息格式為:
SSID: ICIS_LAB, BSSID: 1c:af:f7:9a:65:e4, capabilities: [WPA-PSK-TKIP+CCMP], level: -80,frequency: 2437
Ⅱ android開發中,android虛擬機作為伺服器與pc客戶端實現socket網路通信中,android虛擬機的ip是多少
從exlipse啟動的android虛擬機訪問本機上的ip:10.0.2.2
Ⅲ Android 之間能否通過 socket 進行通信.
第一個問題:這是可以的,android通過socket訪問本機伺服器PC, ip是10.0.2.2。
第二哥問題:用ServerSocket建立一個對象 ServerSocket serverSocket = new ServerSocket(serverListenPort, connectionMaxLength, InetAddress.getByName(serverIpString));
再加一個監聽Socket incoming = serverSocket.accept();就可以檢測客戶端發過來的連接請求,之後使用流就可以完成他們之間的通信了。
原創手打,thanku
Ⅳ Android 與電腦的Socket通信為什麼不能接收數據
按照你的描述,你首先調用Socket(adderss,port)生成了一個socket,然後你要調用connect連接服務端,connect返回成功後才能通信。不知道你有沒有connect。
Ⅳ android服務端與電腦pc上c++的客戶端 實現socket通信
1、android上的伺服器分兩種:
① 用 java 寫的,這種比較簡單,但是需要注意的它的代碼已經被轉換成了大端了,pc上用c++寫傳結構體;
② 用 c/c++ 寫的,這種方式進行和pc上的通信比較的方便,客戶端和伺服器段可以都通過結構來傳遞,唯一需要考慮的是位元組對其的問題,可以用兩個預處理指令(可以跨平台的)處理;
2、源碼的話,我雖然有但是屬於公司的項目代碼,不方便的;
我是ndk吧的吧主,希望大家關注一下ndk吧,有問題的話也可以到裡面留言哦,ndk吧的鏈接:
http://tieba..com/f?kw=ndk 謝謝!
Ⅵ 手機作為客戶端,電腦作為伺服器進行android socket通信
1.PC伺服器啟用ServerSocket兩個通信實體在建立虛擬鏈路之前,需要有一方先准備好,主動接受來自其他通信實體的連接請求。使用ServerSocket對象監聽來自客戶端的Socket連接。//創建ServerSocket對象ServerSocketss=newServerSocket(30000);//監聽來自客戶端的請求while(true){Sockets=ss.accept();…}如果沒有連接,則將一直處於等待狀態。當接收到連接請求後,獲取消息到輸入流,並保存到文件。//接收客戶端消息BufferedReaderin=newBufferedReader(newInputStreamReader(client.getInputStream()));Stringstr;BufferedWriterbw=newBufferedWriter(newFileWriter("D:/ApInfo"+(i++)+".txt"));while((str=in.readLine())!=null){System.out.println(str);bw.write(str);bw.newLine();}2.Android終端使用Socket通信客戶端使用Socket的構造器連接伺服器,指定伺服器IP和埠號就可以了。Sockets=newSocket(「192.168.1.100」,30000);這樣伺服器端的accept()方法就得到響應,從而向下執行,伺服器端和客戶端就形成了一對互相連接的Socket。再進行通信時就沒有伺服器和客戶端之分了,都是通過輸入輸出流進行通信。詳細步驟:採用Handler和TimerTask來定時掃描AP信息並發送給伺服器端。TimerTask規定了到達指定的時間所要進行的任務。TimerTasktask=newTimerTask(){publicvoidrun(){Messagemessage=newMessage();message.what=1;handler.sendMessage(message);}};handler傳遞message內容:Handlerhandler=newHandler(){publicvoidhandleMessage(Messagemsg){switch(msg.what){case1://執行定時器時間到了之後由handler傳遞的任務break;}super.handleMessage(msg);}}接下來掃描AP信息並發送給伺服器端,然後將結果保存。WifiManagerwifiManager=(WifiManager)getSystemService(WIFI_SERVICE);wifiManager.startScan();mWifiList=wifiManager.getScanResults();由WifiManager說明可知,它可以用於處理已配置的網路,當前連接的網路及AP信息的掃描等情況。向伺服器發送消息:socket=newSocket("192.168.1.211",30000);//向伺服器端發送消息PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream())),true);out.println(message);其中message為獲取的AP信息,測試收到的信息格式為:SSID:ICIS_LAB,BSSID:1c:af:f7:9a:65:e4,capabilities:[WPA-PSK-TKIP+CCMP],level:-80,frequency:2437
Ⅶ 通過socket通訊實現安卓虛擬機與pc之間點對點通訊!
完整代碼倒是沒有,虛擬機如果NAT的話做好埠映射,或者直接直接Bridged橋接進網路就行
之後用socket建立連接就可以了。
做過虛擬機跟PC的socket通訊,也做過PC跟安卓機的通訊。
這是一點建議,希望有幫到你!
Ⅷ 如何用socket實現android手機與手機之間的通信
有兩種方案:
1、在PC機上建立伺服器,手機與手機之間的通信通過伺服器進行中轉
2、一部手機作為伺服器,另一部手機作為客戶端接入該手機
一般用第一種方案,示例代碼如下:
1、pc端:
serverSocket=new ServerSocket(5648); //在5648埠進行偵聽
Socket sk = serverSocket.accept();//如果有接入,則創建對應的socket;
2、手機端:
socket=new Socket("tobacco5648.xicp.net",5648);//連接socket
3、消息輸入輸出:
pw=new PrintWriter(socket.getOutputStream()); //消息輸出
pw.println("發送消息");
pw.flush();
br=new BufferedReader(new InputStreamReader(socket.getInputStream())); //消息接收
while((str=br.readLine())!=null){
//接收消息
}
Ⅸ android手機端程序與pc端c程序進行socket通信問題
這是說你的網路連接的相關的程序寫在了主線程裡面,在 android裡面是不可以這樣的因為主線程是ui線程這種耗時操作是不能寫在主線程中,否則界面會出現卡頓,所以你應該把你的socket操作寫在另外一個線程中 也就是 new thread(){ public void run()
{}}.start();
把你的socket操作寫在run方法中
Ⅹ android軟體開發中 實現手機與PC用socket通信,那手機發送給PC的若干數據,PC怎樣才
自己定義一個『協議』;
比如:
command[用戶登錄]
username=admin
password=456
當然這比較費神,可以採用xml或json做數據交換格式。
兩邊只需要序列化和反序列化即可,就像操作bean一樣。
另外,也可以採用Serializable序列化,ObjectOutputStream 和 ObjectInputStream 將對象通過網路傳輸。