tcp视频传输-服务端

来源:互联网 发布:手机变声器软件 编辑:程序博客网 时间:2024/06/05 08:53
#include<Winsock2.h>#include<iostream.h>#include<fstream>//#include<stdlib.h>using namespace std;void main(){    WSADATA wsaData;  SOCKET oldSocket,newSocket;  int i=0;  //客户SOCKETAddr地址结构  int iLen=0;    //接收的数据长度  int irecvLen =0;    //接收来自用户的信息,即接收缓存  char recvBuf[512];  //客户和服务器的SOCKETAddr地址结构  struct sockaddr_in serAddr,clientAddr;  if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)  {    cout<<"failed to load winsock"<<endl;    return;  }    cout<<"server waiting"<<endl;  cout<<"---------------"<<endl;  //创建服务器端帧听SOCKET  oldSocket=socket(AF_INET,SOCK_STREAM,0);  if(oldSocket==INVALID_SOCKET)  {    cout<<"socket() failed:"<<WSAGetLastError()<<endl;    return;  }  //以下是建立服务器端的SOCKET地址结构  serAddr.sin_family=AF_INET;  serAddr.sin_port=htons(5050);  serAddr.sin_addr.s_addr= inet_addr("10.25.162.181");  if(bind(oldSocket,(LPSOCKADDR)&serAddr,sizeof(serAddr))==SOCKET_ERROR)  {    cout<<"bind() failed:"<<WSAGetLastError()<<endl;    return;   }  //进入侦听状态  if(listen(oldSocket,5)==SOCKET_ERROR)  {    cout<<"listen() failed:"<<WSAGetLastError()<<endl;    return;  }  //接收客户端的连接  iLen=sizeof(clientAddr);  newSocket=accept(oldSocket,(struct sockaddr*)&clientAddr,&iLen);//产生一个新的SOCKET  if(newSocket==INVALID_SOCKET)  {cout<<"accept() failed:"<<WSAGetLastError()<<endl;//return ;  }  ofstream str("C:\\Users\\ning\\Desktop\\服务器端\\Debug\\姚静.avi");  //进入一个无限循环,等待客户发送数据  while(1)  {  i++;    //服务器初始化接收缓冲区memset(recvBuf,0,512);irecvLen=recv(newSocket,recvBuf,sizeof(recvBuf),0);cout<<recvBuf<<endl;if(irecvLen==SOCKET_ERROR){cout<<"rcv() failed:"<<WSAGetLastError()<<endl;break;    }else if(irecvLen==0)break;else {cout<<"接受数据"<<recvBuf<<endl; str<<recvBuf;  } if(strcmp(recvBuf,"quit")==0)     break;   }    closesocket(newSocket);   closesocket(oldSocket);   WSACleanup();}