链接到服务端的线程 在需要链接服务端的时候开启线程
class RequestThread extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
try {
// 1.连接服务器
// String ip = InetAddress.getLocalHost().getHostAddress();// 服务器Ip地址
System.out.println("AbsClient*****连接服务器");
socket = new Socket("192.168.1.110", 8080);// 修改为自己服务器的IP与端口号
System.out.println("AbsClient*****已经建立连接");
// 2.发送请求数据 params为要发送的消息
System.out.println("AbsClient*****发送请求");
sendRequest(socket.getOutputStream(), "链接服务器");
socket.isInputShutdown();
System.out.println("AbsClient*****请求发送成功*****接收响应");
bufferedInputStream = new BufferedInputStream(socket.getInputStream());
// 3.接收并解析响应数据 循环监听服务器发送过来的数据
while (!isInterrupted()) {
int size = 0;
try {
byte[] b = new byte[1024];
if (bufferedInputStream == null)
return;
// 服务器有数据过来的时候就取出数据 没数据的时候就堵塞在这里
size = bufferedInputStream.read(b, 0, b.length);
if (size > 0) {
String mes = new String(b, 0, size); 这是服务端发送过来的数据
System.out.println("AbsClient*****响应接收完成*****服务器返回结果");
}
} catch (Exception e) {
// TODO: handle exception
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/******** 生成并发送请求数据 ***************************************************/
public static void sendRequest(OutputStream out, String params) throws Exception {
out.write(params.getBytes());
out.flush();
System.out.println("AbsClient我发送到服务端去》》》" + params);
}
可以用socket.getOutputStream() 获取输出流