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

📄 server.cpp

📁 实现arq滑动窗口协议
💻 CPP
字号:
# include "Winsock.h"
# include "windows.h"
# include "stdio.h"
# pragma comment (lib,"wsock32.lib")
# define RECV_PORT 7777
# define SEND_PORT 7777


SOCKET sock,sock1;
sockaddr_in ServerAddr;
sockaddr_in ClientAddr;
int Addrlen;
 

DWORD StartSock()
{   
	WSADATA WSAData;
    if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)
	{   
		printf("sock init fail !\n");
		WSACleanup();
	    return(-1);
	}
	return(1);
}
   

DWORD  CreateSocket()
{   sock=socket(AF_INET,SOCK_STREAM,0);
    if(sock==SOCKET_ERROR)
	{  
		printf("sock create fail !\n");
	   WSACleanup();
        return(-1);
	}
	ServerAddr.sin_family=AF_INET;
	ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);
    ServerAddr.sin_port=htons(RECV_PORT);
	if(bind(sock,(struct sockaddr FAR * )&ServerAddr,sizeof(ServerAddr))!=0)
	{   
		printf("bind is the error");
		WSACleanup();
	   return(-1);

	}
	return(1);
}
    

DWORD ConnectProcess()
{
	char buff[80];
	Addrlen=sizeof(sockaddr_in);
	if(listen(sock,5)<0)
	{ 
		printf("Listen error");
	  return(-1);
	}
	printf("Listening...\n");
	for(;;)
    {  
		sock1=accept(sock,(struct sockaddr FAR * )&ClientAddr,&Addrlen);
	   for(;;)
	   {  
		   memset(buff,0,80);
	      if(recv(sock1,buff,80,0)<=0)
		  {
			  break;
		  }
		  printf(buff);
		  printf("\n");
	   }
	   }
}
int main()
{
	if(StartSock()==-1)
		return(-1);
	if(CreateSocket()==-1)
		return(-1);
	if(ConnectProcess()==-1)
		return(-1);

	return(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -