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

算是做一个笔记吧。以免以后忘记了。
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;
		}

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值