當前位置:首頁 » 安卓系統 » androidsocket實例

androidsocket實例

發布時間: 2022-08-01 13:37:56

㈠ 在android如何開發socket應用

Socket和java的模式一樣都是Socket socket = new Socket(ip, port);socket.getInputStream()和socket.getOutputStream()接收或發送數據

㈡ 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在線程中socket連接例子

package com.cpa.uri;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class ClientDemo {
public static void main(String[] args) throws IOException, Exception {
ClientDemo client=new ClientDemo();
client.open();
}
private void open() throws Exception, IOException{
Socket s=new Socket("localhost",8000);
InputStream in=s.getInputStream();
OutputStream out=s.getOutputStream();
new Reader(out).start();
new Write(in).start();
}
class Reader extends Thread{
OutputStream out;
public Reader(OutputStream out) {
this.out=out;
setDaemon(true);
}
@Override
public void run() {
try {
Scanner s=new Scanner(System.in);
while(true){
String str=s.nextLine();//讀取控制台
out.write(str.getBytes());//發送到伺服器
out.write('\n');
out.flush();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.run();
}
}
class Write extends Thread{
InputStream in;
public Write(InputStream in) {
this.in=in;
}
@Override
public void run() {
int b;
try {
while((b=in.read())!=-1){
System.out.println(b);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
**************************

package com.cpa.uri;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ServerDemo {

public static void main(String[] args) throws Exception {
ServerDemo server=new ServerDemo();
server.start();
}
private void start() throws Exception{
ServerSocket ss=new ServerSocket(8000);
while (true) {
System.out.println("等待客戶端連接!");
Socket s=ss.accept();
System.out.println("客戶端連接成功:"+s.getInetAddress());
//為這個客戶端創建一個服務線程
new Service(s).start();
}
}
class Service extends Thread{
Socket s;
public Service(Socket s){
this.s=s;
}
@Override
public void run() {
try {
InputStream in=s.getInputStream();
OutputStream out=s.getOutputStream();
//伺服器向客戶寫消息
out.write("說口令".getBytes());
out.flush();
Scanner s=new Scanner(in);
while(true){
String str=s.nextLine();
if (str.equals("A friend in need is a friend indeed")) {
out.write("回答正確".getBytes());
out.flush();
}else if (str.equals("ni是不是笨蛋")) {
out.write("是".getBytes());
out.flush();
break;
}else{
out.write("What do you say!".getBytes());
out.flush();
}
}
s.close();
} catch (Exception e) {
}
super.run();
}
}
}
************************
客戶端和伺服器端java代碼,自己改動下就可以變成android代碼了.

㈣ android socket通信

首先,你要實現的就是從資料庫里讀數據,然後通過socket傳過去。

但是明明開一個線程就行的,為什麼要開兩個線程呢。而之所以會出現這個問題就是因為再加上主線程,三個線程的變數全共享了。而線程運行本身就是宏觀上並行的,不知道三線程哪個先,哪個後,這也就是為什麼有時候有數據,有時候沒數據,完全放大的線程的不確定性。

最後線程通知UI要用Handle實現。

{
privatebooleanisConnect=true;
publicvoidrun(){
socket=newSocket(HOST,POST);
output=newPrintWriter(socket.getOutputStream(),true);
input=newBufferedReader(newInputStreamReader(socket.getInputStream(),"gbk"));
while(isConnect){
//傳回的XML字元串
xmlback=input.readLine();//無數據會阻塞
//returnxmlback;//從伺服器端返回值xmlback
用Handle傳回值給主線程,不用return.
}
}
publicStringsendMessage(SendxmlVOsend){//send應該是存值的,不看見用上,自己結合操作資料庫改一下
Stringxmlback="";
//生成xml文件轉換成字元串(xmlstring)
output.println(xmlstring+" ");
}
publicvoidclose(){
isConnect=false;
input.close();
output.close();
socket.close();
}
}

你試試這個樣子寫,

㈤ 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數據傳輸。

㈥ 安卓開發socket開發簡單例子 怎麼寫

package scut;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Sock {

/**
* 伺服器端
*
* @author Administrator
*
*/

// 程序入口

public static void main(String args[]) {

try {

// 建立一個ServletSocket ,監聽對應的埠,用於監聽客戶端的連接請求
ServerSocket serverSocket = new ServerSocket(40004);

while (true) { // 循環不斷接收客戶端的請求

System.out.println("等待客戶端請求....");

Socket socket = serverSocket.accept();
// 等待接收

System.out.println("收到請求,伺服器建立連接...");

// 返回數據

OutputStream os = socket.getOutputStream();

String msg = "伺服器已連接成功...";

os.write(msg.getBytes("utf-8"));

os.close();

socket.close();

}

}
catch (Exception e) {

e.printStackTrace();

}

}
}

㈦ 如何用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){
//接收消息
}

㈧ 求一個安卓socket通訊例子:server為Linux C 虛擬機端 ,client為安卓

Android使用的僅僅使用了PC 里邊的一個埠

IP自然就是127.0.0.1了,或者是localhost吧

關於5037口和5555口,找到了一個看起來合理的解釋:
adb(Android Debug Bridge)包括三個部分:
1)adb client, 運行在PC上(為DDMS,即IDE工作)
2)adb daemon(守護進程), 運行於Emulator(為與Emulator中的VM交互工作);
3)adb server(服務進程), 運行在PC(任務管理器上有),管理著adb client和adb daemon的通信.server與client通信的埠是是5037,
adb server會與emulator交互的,使用的埠有兩個,一個是5554專門用於與Emulator實例的連接,那麼數據可以從Emulator轉發給IDE控制台了,另一個則是5555,專門與adb daemon連接為後面調試使用。

熱點內容
硬體的演算法 發布:2024-05-03 12:34:28 瀏覽:388
支付密碼為什麼就六位 發布:2024-05-03 12:29:17 瀏覽:920
腳本找書 發布:2024-05-03 12:02:17 瀏覽:493
境外伺服器租用怎麼辦 發布:2024-05-03 11:45:34 瀏覽:943
我的世界伺服器怎麼設置到重生點 發布:2024-05-03 11:33:04 瀏覽:752
mysqllinux安裝包下載 發布:2024-05-03 11:32:07 瀏覽:934
以太演算法的幣 發布:2024-05-03 11:30:45 瀏覽:383
編譯nfs 發布:2024-05-03 11:30:40 瀏覽:432
srs搭建直播伺服器 發布:2024-05-03 11:29:53 瀏覽:133
南通哪裡有賣密碼鎖的 發布:2024-05-03 11:22:01 瀏覽:522