#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();
}
tcp视频传输-服务端
最新推荐文章于 2023-10-11 23:02:41 发布