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