?? tcpreceiveadapter.java
字號:
/* * TCPReceiveAdapter.java * * Created on November 19, 2003, 11:55 AM */package gov.nist.applet.phone.media.protocol.transport;import java.io.IOException;import java.net.Socket;import javax.media.protocol.PushSourceStream;import javax.media.rtp.RTPConnector;import javax.media.rtp.OutputDataStream;/** * An implementation of RTPConnector based on TCP sockets. * This implementation can only receive RTP data. * @author DERUELLE Jean */public class TCPReceiveAdapter implements RTPConnector { private Socket remoteSocket; private Socket remoteCtrlSocket; /*private ServerSocket serverSocket; private ServerSocket ctrlServerSocket; private InetAddress addr; private int localPort; private int rtcpLocalPort; */ private TCPPushSourceStream dataInStrm = null, ctrlInStrm = null; private TCPOutputDataStream dataOutStrm = null, ctrlOutStrm = null; /** Creates a new instance of TCPReceiveAdapter * @param addr - address of the remote host * @param localPort - port of the local host * @param destPort - port of the remote host */ /*public TCPReceiveAdapter(InetAddress addr, int localPort, int destPort) throws IOException { this(addr, localPort, destPort, 1); }*/ /** Creates a new instance of TCPReceiveAdapter * @param addr - address of the remote host * @param localPort - port of the local host * @param destPort - port of the remote host * @param ttl - time to live */ /*public TCPReceiveAdapter(InetAddress addr, int localPort, int destPort, int ttl) throws IOException { try { //Start the serverSocket for the RTP serverSocket = new ServerSocket(localPort); } catch(SocketException e) { System.out.println(addr+","+localPort+","+destPort); throw new IOException(e.getMessage()); } System.out.println("TCP Listening Point created on port: "+localPort); TCPConnectionListener listener=new TCPConnectionListener(serverSocket, this, false); listener.start(); rtcpLocalPort=localPort+1; try{ //Start the serverSocket for the RTCP ctrlServerSocket = new ServerSocket(rtcpLocalPort); } catch(SocketException e) { System.out.println(addr+","+rtcpLocalPort+","+destPort); throw new IOException(e.getMessage()); } System.out.println("TCP Control Listening Point created on port: "+rtcpLocalPort); TCPConnectionListener ctrlListener=new TCPConnectionListener(ctrlServerSocket, this, true); ctrlListener.start(); //Wait for connections listener.waitForConnections(); ctrlListener.waitForConnections(); this.addr = addr; this.localPort = localPort; }*/ /** Creates a new instance of TCPReceiveAdapter * @param socketRTP - socket for receiveing RTP media * already connected to the remote host * @param socketRTCP - socket for receiveing RTCP media * already connected to the remote host */ public TCPReceiveAdapter(Socket socketRTP,Socket socketRTCP) { this.remoteSocket=socketRTP; this.remoteCtrlSocket=socketRTCP; } /** * Returns an input stream to receive the RTP data. * @return input stream to receive the RTP data. */ public PushSourceStream getDataInputStream() throws IOException { if (dataInStrm == null) { dataInStrm = new TCPPushSourceStream(remoteSocket,false); dataInStrm.start(); } return dataInStrm; } /** * Returns an output stream to send the RTP data. * @return output stream to send the RTP data. */ public OutputDataStream getDataOutputStream() throws IOException { if (dataOutStrm == null) dataOutStrm = new TCPOutputDataStream(remoteSocket,false); return dataOutStrm; } /** * Returns an input stream to receive the RTCP data. * @return input stream to receive the RTCP data. */ public PushSourceStream getControlInputStream() throws IOException { if (ctrlInStrm == null) { ctrlInStrm = new TCPPushSourceStream(remoteCtrlSocket,true); ctrlInStrm.start(); } return ctrlInStrm; } /** * Returns an output stream to send the RTCP data. * @return output stream to send the RTCP data. */ public OutputDataStream getControlOutputStream() throws IOException { if (ctrlOutStrm == null) ctrlOutStrm = new TCPOutputDataStream(remoteCtrlSocket,true); return ctrlOutStrm; } /** * Close all the RTP, RTCP streams. */ public void close() { if (dataInStrm != null) dataInStrm.kill(); if (ctrlInStrm != null) ctrlInStrm.kill(); /*try{ serverSocket.close(); } catch(IOException ioe){ ioe.printStackTrace(); } try{ ctrlServerSocket.close(); } catch(IOException ioe){ ioe.printStackTrace(); }*/ try{ remoteSocket.close(); } catch(IOException ioe){ ioe.printStackTrace(); } try{ remoteCtrlSocket.close(); } catch(IOException ioe){ ioe.printStackTrace(); } } /** * Set the receive buffer size of the RTP data channel. * This is only a hint to the implementation. The actual implementation * may not be able to do anything to this. * @param size - receive buffer size */ public void setReceiveBufferSize( int size) throws IOException { remoteSocket.setReceiveBufferSize(size); } /** * Get the receive buffer size set on the RTP data channel. * Return -1 if the receive buffer size is not applicable for * the implementation. * @return receive buffer size */ public int getReceiveBufferSize() { try { return remoteSocket.getReceiveBufferSize(); } catch (Exception e) { return -1; } } /** * Set the send buffer size of the RTP data channel. * This is only a hint to the implementation. The actual implementation * may not be able to do anything to this. * @param size - send buffer size. */ public void setSendBufferSize( int size) throws IOException { remoteSocket.setSendBufferSize(size); } /** * Get the send buffer size set on the RTP data channel. * Return -1 if the send buffer size is not applicable for * the implementation. * @return send buffer size */ public int getSendBufferSize() { try { return remoteSocket.getSendBufferSize(); } catch (Exception e) { return -1; } } /** * Return the RTCP bandwidth fraction. This value is used to * initialize the RTPManager. Check RTPManager for more detauls. * @return RTCP bandwidth fraction. -1 to use the default values. */ public double getRTCPBandwidthFraction() { return -1; } /** * Return the RTCP sender bandwidth fraction. This value is used to * initialize the RTPManager. Check RTPManager for more detauls. * Return -1 to use the default values. * @return RTCP sender bandwidth fraction. -1 to use the default values. */ public double getRTCPSenderBandwidthFraction() { return -1; } /** * Set the remote socket connected to this Adapter TCP Listening port * @param socket - remote socket connected to this Adapter TCP Listening port * @param ctrl - tells if this socket is for the RTP or RTCP */ public void setRemoteSocket(Socket socket, boolean ctrl){ if(ctrl) this.remoteCtrlSocket=socket; else this.remoteSocket=socket; } }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -