live555学习之一RTSPServer的创建监听并监听客户端



服务器创建一个socket作为server端的套接字

1.RTSPServer::setUpOurSocket



1.1.调用 GroupsockHelper 的 setupStreamSocket创建一个socket连接,并绑定,

ourSocket = setupStreamSocket(env, ourPort);


1.2. 设置发送缓冲区为50K

if (!increaseSendBufferTo(env, ourSocket, 50*1024))


1.3. 监听端口 其最大连接数为LISTEN_BACKLOG_SIZE 20

    if (listen(ourSocket, LISTEN_BACKLOG_SIZE) < 0)


1.4. 返回创建的socket

return ourSocket;


调用构造函数
2.new RTSPServer



      2.1. 记录成员信息 端口号 记录socket

    fRTSPServerPort(ourPort), fRTSPServerSocket(ourSocket), fHTTPServerSocket(-1), fHTTPServerPort(0),
    fServerMediaSessions(HashTable::create(STRING_HASH_KEYS)),
    fClientConnections(HashTable::create(ONE_WORD_HASH_KEYS)),
    fClientConnectionsForHTTPTunneling(NULL), // will get created if needed
    fClientSessions(HashTable::create(STRING_HASH_KEYS)),
    fPendingRegisterRequests(HashTable::create(ONE_WORD_HASH_KEYS)), fRegisterRequestCounter(0),
    fAuthDB(authDatabase), fReclamationTestSeconds(reclamationTestSeconds),
    fAllowStreamingRTPOverTCP(True) {
  ignoreSigPipeOnSocket(ourSocket); // so that clients on the same host that are killed don't also kill us


2.2  注册一个成员函函数用于接收客户端的连接

void RTSPServer::incomingConnectionHandlerRTSP(void* instance, int /*mask*/) {
  RTSPServer* server = (RTSPServer*)instance;
  server->incomingConnectionHandlerRTSP1();
}
void RTSPServer::incomingConnectionHandlerRTSP1() {
  incomingConnectionHandler(fRTSPServerSocket);
}
void RTSPServer::incomingConnectionHandler(int serverSocket) {


2.2.1accept返回客户端的socket描述符clientSocket

int clientSocket = accept(serverSocket, (struct sockaddr*)&clientAddr, &clientAddrLen);

2.2.2设置和客户端的连接模式为非阻塞的模式

makeSocketNonBlocking

2.2.3.设置客户端socket描述符的发送缓存为50*1024

increaseSendBufferTo(envir(), clientSocket, 50*1024);

2.2.4.创建一个处理连接函数

createNewClientConnection
RTSPClientConnection

2.2.4.1 将该链接添加进入fClientConnections的连接表中
fOurServer.fClientConnections->Add((char const*)this, this);

2.2.4.2 注册一个处理事件通信的函数(自己的程序可以用线程替代)
setBackgroundHandling(&incomingRequestHandler())



参考:
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值