⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcpreceiveadapter.java

📁 It is Java for SIP phone
💻 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 + -