您的位置:首页 > 移动开发 > Android开发

android socket 通信(1)

2016-05-24 16:36 423 查看
1.android 3.0 以后的网络操作要放在单独放在线程里。

2.添加权限

<!-- 允许应用程序打开Socket -->

    <uses-permission android:name="android.permission.INTERNET" />

3.服务器线程:

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

import android.util.Log;

public class ServerThread implements Runnable {

ServerSocket serverSocket = null;

@Override
public void run() {
// TODO Auto-generated method stub
try {
serverSocket = new ServerSocket(7777);
while (true) {
Log.d("Comtest3", "wait for data...");
Socket socket = serverSocket.accept();
Log.d("Comtest3", "there is data...");
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
// 写字符串
writer.write("服务器的数据已经接受到!");
writer.flush();
writer.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
Log.d("Comtest3", "异常");
e.printStackTrace();
}
}

}客户端的线程:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

import android.util.Log;

public class ClientThread implements Runnable{

Socket socket = null;
private String line;
@Override
public void run() {
// TODO Auto-generated method stub
try {
socket = new Socket("192.168.43.71", 7777);
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
line = br.readLine();
br.close();
Log.i("comtest3", line);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
4.分析:
首先服务器ServerSocket启动,调用accept()方法等待客户端Socket发起连接;然后服务器用BufferedWriter向ServerSocket.getOutputStream()写字符串,发送到客户端;客户端用BufferedReader读getInputStream()的字符串输出到日志
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: