4
我可以使用預先製作的軟件連接到我的Rtsp服務器,但使用以下代碼段我無法從服務器獲得答案。即使連接成功,服務器也不會回答我。無法從RTSP服務器獲得任何答案
public class RtspClient {
private Socket server;
private InputStream is = null;
private OutputStream os = null;
private int seqid = 1;
private String request, resp;
private byte[] buffer = new byte[4096];
private int len = 0;
public RtspClient(String rIp, int rPort) {
try {
//INIT
server = new Socket(rIp, rPort);
is = server.getInputStream();
os = server.getOutputStream();
System.out.println("Connected to "+ rIp + ":" + rPort);
//COMMUNICATION
Boolean isTalking = true;
while(isTalking == true) {
//sending request
String request = new String("OPTIONS * RTSP/1.0\r\nCSeq: 0\r\n");
os.write(request.getBytes(), 0, request.length());
System.out.println("Sent: "+ request);
/////////////////
//getting response
len = is.read(buffer, 0, buffer.length);
if(len > 0) {
resp= new String(buffer, 0, len);
}
else {
resp = "empty";
}
System.out.println("Received: "+ resp);
//////////////////
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
這裏是Wireshark的截圖:http://imageplay.net/img/tya22277766/Untitled.png
來自服務器的答案應該是:
RTSP/1.0 200 OK
Supported: play.basic, con.persistent
Cseq: 0
Server: Wowza Media Server x.x.x.x buildxxx
Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, OPTIONS, ANNOUNCE, RECORD, GET_PARAMETER
Cache-Control: no-cache
謝謝!
RFC做不要求'CSeq'不爲零,只是爲了呈現和遞增。但是在樣本上你不會發現它爲零。我認爲這可能是你的代碼的問題。 – 2012-08-01 17:12:55
我發現了我的問題的答案,但是關於CSeq,我同意你的觀點,即使服務器不在意CSeq從零開始! – 2012-08-02 18:05:46