原因: 主要是Socket socket = serverSocket.accept();前面必须要while (true) {…}循环
服务端
new Thread(new Runnable() {
@Override
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(2756);
logger.info("启动tcp服务成功!");
while (true) {
Socket socket = serverSocket.accept();
new Thread(new Runnable() {
@Override
public void run() {
InputStream inputStream = null;
try {
socket.setKeepAlive(true);
inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String str = "";
while ((str = bufferedReader.readLine()) != null) {
break;
}
//获取客户端url的地址和参数/demo?query=3
String param = str.split(" ")[1].split("\\?")[1].split("=")[1];
int len = -1;
while ((len = inputStream.available()) != -1) {
byte[] data = new byte[len];
inputStream.read(data);
if (data.length == 0) {
continue;
}
logger.info("size={}", data.length);
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (inputStream != null) {
inputStream.close();
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
logger.info("线程结束", Thread.currentThread().getName());
}
}).start();
}
} catch (Exception e) {
e.printStackTrace();
}
logger.info("serverSocket线程结束");
}
}).start();
客户端
public class URLDemo {
public static void main(String[] args) {
try {
URL url=new URL("http://192.168.1.136:2756/rtsp?query=3");
URLConnection uc=url.openConnection();
InputStream in=uc.getInputStream();
byte[] b=new byte[1024];
int len;
while((len=in.read(b))!=-1)
{
System.out.println(new String(b,0,len));
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}