Android实现socket简单通信

来源:互联网 发布:外设天下淘宝店 编辑:程序博客网 时间:2024/06/06 14:14

1.添加权限

<!--允许应用程序改变网络状态-->

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

<!--允许应用程序改变WIFI连接状态-->

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

<!--允许应用程序访问有关的网络信息-->

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

<!--允许应用程序访问WIFI网卡的网络信息--> 

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

<!--允许应用程序完全使用网络-->

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


2.1 使用TCP协议通信

protected void connectServerWithTCPSocket() { 

Socket socket;  

try {

socket = new Socket("192.168.1.32"1989);  

// 创建一个InputStream用户读取要发送的文件。

InputStream inputStream = new FileInputStream("e://a.txt");  

// 获取Socket的OutputStream对象用于发送数据

OutputStream outputStream = socket.getOutputStream();

// 创建一个byte类型的buffer字节数组,用于存放读取的本地文件

byte buffer[] = new byte[4 * 1024];

int temp = 0;

// 循环读取文件

while ((temp = inputStream.read(buffer)) != -1) { 

// 把数据写入到OuputStream对象中 

outputStream.write(buffer, 0, temp);  

}

// 发送读取的数据到服务端 

outputStream.flush();  

}catch (UnknownHostException e) { 

e.printStackTrace(); 

}catch (IOException e) { 

 e.printStackTrace();  

}

}

2.2 服务器端简单实现

 public void ServerReceviedByTcp() {

// 声明一个ServerSocket对象

ServerSocket serverSocket = null;  

try {

// 创建一个ServerSocket对象,并让这个Socket在1989端口监听

serverSocket = new ServerSocket(1989);  

// 调用ServerSocket的accept()方法,接受客户端所发送的请求,如果客户端没有发送数据,那么该线程就停滞不继续

Socket socket = serverSocket.accept(); 

// 从Socket当中得到InputStream对象

InputStream inputStream = socket.getInputStream();

byte buffer[] = new byte[1024 * 4];

int temp = 0;

// 从InputStream当中读取客户端所发送的数据

while ((temp = inputStream.read(buffer)) != -1) { 

 System.out.println(new String(buffer, 0, temp)); 

}

serverSocket.close();  

}catch (IOException e) { 

 e.printStackTrace();  

}

}




0 0
原创粉丝点击