多媒体网络通信技术大作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多媒体网络通信技术大作业

电信1203

朱银啸

0121209310309

1、题目:基于局域网的可视对讲系统设计

2、系统开发环境与工具:

(1)、硬件环境:实验室局域网

(2)、软件环境:WindowsXP操作系统

(3)、开发工具:自己熟悉的面向对象的网络通信编程工具与平台,相关音频、视频编码与传输协议类库

3、要求与评分标准:

(1)要求:在以上硬软件环境下,利用合适的开发工具,设计一套可视对讲软件,实现局域网内两台计算机之间的可视对讲功能,要求音视频信号连续性、实时性较好,满足正常交流需要。

(2)评分标准

代码

客户端请求连接线程(呼叫处理)关键代码如下:

DWORD WINAPI ConnectThreadFunc(LPVOID pParam)

{

CChatRoomDlg *pChatRoom = (CChatRoomDlg *)pParam; ASSERT(pChatRoom ! = NULL);

pChatRoom ->m_ConnectSock = socket (AF_INET ,SOCK_STREAM , IPPROTO_TCP);

if ( pChatRoom->m_ConnectSock == INVALID_SOCKET) { AfxMessageBox(_T("新建Socket 失败!"));

return FALSE;

}

CString strServIp;

pChatRoom->GetDlgItemText(IDC_IP_ADDR, strServIp);

int iPort = pChatRoom ->GetDlgItemInt (IDC_CONNECT_PORT);

if( iPort <= 0 || iPort > 65535 ) {

AfxMessageBox(_T("请输入合适的端口:1 - 65535"));

goto __Error_End;

}

char szIpAddr[16] = {0};

USES_CONVERSION;

strcpy_s(szIpAddr, 16, T2A(strServIp));

sockaddr_in server;

server.sin_family = AF_INET;

server.sin_port = htons(iPort);

server.sin_addr.s_addr = inet_addr(szIpAddr);

if(connect(pChatRoom->m_ConnectSock,(struct sockaddr*)&server, sizeof(struct sockaddr)) == SOCKET_ERROR )

{

AfxMessageBox(_T("连接失败,请重试!"));

goto __Error_End;

}

pChatRoom->ShowMsg(_T(" 系统信息:连接服务器成功!"));

while( TRUE ) {

if ( SOCKET_Select(pChatRoom->m_ConnectSock) ) {

TCHAR szBuf[MAX_BUF_SIZE] = {0};

int iRet = recv (pChatRoom->m_ConnectSock, (char*)szBuf, MAX_BUF_SIZE, 0);

if ( iRet > 0 ) {

pChatRoom->ShowMsg(szBuf);

}else{

pChatRoom->ShowMsg(_T("聊天服务器已停止,请重新进行连接!")); break;

}

}

Sleep(500);

}

__Error_End:

closesocket(pChatRoom->m_ConnectSock);

return TRUE;

}

//捕获窗口

BOOL VideoCapture::Initialize()

{

char devname[128]={0},devversion[128]={0};

int index=0;

BOOL ret = TRUE, ret1 = TRUE, ret2 = TRUE, ret3 = TRUE;

TRACE("VideoCapture::Initialize\n");

//创建一个AVICap捕获窗口

m_capwnd = capCreateCaptureWindow("Capture",WS_POPUP,0,0,1,1,0,0); if(!m_capwnd){

return FALSE;

}

//connect callback functions

ret = capSetUserData(m_capwnd,this);

//Change destroy functions also........

ret1 = capSetCallbackOnVideoStream(m_capwnd,OnCaptureVideo);

//得到已安装的捕获设备的名称及版本

ret2 = capGetDriverDescription(index,devname,100,devversion,100);

// Connect to webcam driver

//使一个捕获窗口与一个捕获设备连接或关联

ret3 = capDriverConnect(m_capwnd,index);

if(!(ret && ret1 && ret2 && ret3)){

// Device may be open already or it may not have been

// closed properly last time.

AfxMessageBox("Unable to open Video Capture Device");

// log.WriteString("\n Unable to connect driver to the window");

m_capwnd=NULL;

return FALSE;}

// Set the capture parameters

if(SetCapturePara()==FALSE)

{

// log.WriteString("\n Setting capture parameters failed"); capDriverDisconnect(m_capwnd); //使捕获窗口与一个捕获设备断开

return FALSE;

相关文档
最新文档