安卓Scoket请求和返回的方法。

来源:互联网 发布:被雷劈死的国师知乎 编辑:程序博客网 时间:2024/05/19 22:04
算是做一个笔记吧。以免以后忘记了。
import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.Socket;import java.net.UnknownHostException;import android.util.Log;public class ServerSocketMethod {static boolean isrun = true;static String TAG = "ServerSocketMethod";static byte[] buffer = null;// 将组装好的数据进行Scoket上传和接受返回//@SuppressWarnings("resource")public static byte[] ServerSocketUpload(int Port, String IP,byte[] sendbytes) {Log.e(TAG, "Port+IP" + Port + IP);Socket socket;InetSocketAddress isa;try {// 上传Log.e(TAG, "上传开始");socket = new Socket();isa = new InetSocketAddress(IP, Port);// 创建socket对象,指定服务器端地址和端口号Log.e(TAG, "上传1");socket.connect(isa, 5000);// 设置5秒超时OutputStream out = socket.getOutputStream();// 创建一个输出流对象Log.e(TAG, "上传2");out.write(sendbytes); // 要输出给移动服务器的内容..Log.e(TAG, "上传3");out.close();out.flush();socket.close();// 接受返回ServerSocket tcpSocket = null;tcpSocket = new ServerSocket(Port);Socket s = null;Log.e(TAG, "返回了1");s = tcpSocket.accept();// 如果未收到数据,此句不会继续向下执行,一直处于监听状态s.setSoTimeout(5000);//设置接收5秒超时Log.e(TAG, "返回了2");InputStream in = s.getInputStream();Log.e(TAG, "返回了3");byte[] buffer = new byte[86];in.read(buffer);String DRb = new String(buffer, 0, 2);Log.e(TAG, "DRb:" + DRb);Log.e(TAG, "buffer:" + buffer);Log.e(TAG, "返回buffer");s.close();tcpSocket.close();return buffer;} catch (UnknownHostException e) {e.printStackTrace();return null;} catch (IOException e) {e.printStackTrace();return null;}}}

0 0
原创粉丝点击