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

📄 sever.cpp

📁 TCP一个简单应用,功能不完善,刚学的, 运用一下刚学的知识
💻 CPP
字号:
#include<Winsock2.h>
#include<iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
#define DEFAULT_PORT 5050
int main()
{
  
  int iPort = DEFAULT_PORT;
  WSADATA wsaData;
  SOCKET sClient;
  //客户地址长度
  int iLen;
  //发送的数据长度
  int iSend;
  char buf[] = "已收到!";
  char buf2[200];
 //服务器与客户端地址
  struct sockaddr_in ser,cli;

 cout <<"---------------------------\n";
 cout <<" 服务器启动,等待消息......\n";
 cout <<"---------------------------\n";
 WSAStartup(MAKEWORD(2,2),&wsaData);
 sClient=socket(AF_INET,SOCK_DGRAM,0);
 if(sClient == INVALID_SOCKET)
 {   
	 cout << "套接口错误:"<< WSAGetLastError() << endl;
	 return 0 ;
 }
 ser.sin_family = AF_INET;
 ser.sin_port=htons(iPort);
 ser.sin_addr.s_addr=htonl(INADDR_ANY);
 if(bind(sClient,(SOCKADDR*)&ser,sizeof(SOCKADDR)) == SOCKET_ERROR)
 {
	 cout << "绑定错误:"<< WSAGetLastError() <<endl;
	 return 0 ;
 }
/*if(listen(sClient,5) == SOCKET_ERROR)
{   int temp = WSAGetLastError();
	cout << "listen failed:"<<temp<<endl;
	return 0;
}*/
    iLen=sizeof(cli);


	/*sAccept = accept(sClient,(struct sockaddr*)&cli,&iLen);
	if(sAccept == INVALID_SOCKET)
	{
		cout << "accept()Failed:"<<WSAGetLastError();
		break;
	}
	cout << "hello!";*/
	//cout << "Accepted client IP:"<< inet_ntoa(cli.sin_addr)<< "port:" << ntohs(cli.sin_port);
	while(1)
	{   //
		int ret = recvfrom(sClient,buf2,200,0,(SOCKADDR*)&cli,&iLen);
		if( ret == SOCKET_ERROR)
		{
			
			cout << "接收错误:" << WSAGetLastError() << endl;
			break;
		}
		else if(ret == 0)
		{
			
			break;
		}
		cout << "学号为:" << buf2<<endl;
	//	iLen = sizeof(cli);
	iSend = sendto(sClient,buf,sizeof(buf),0,(SOCKADDR*)&cli,iLen);
//	iSend = sendto(sClient,buf,sizeof(buf),0,(SOCKADDR*)&server,iLen);
	if(iSend==SOCKET_ERROR)
	{  
		cout << "发送错误:"<< WSAGetLastError() << endl;
		return 0;
	}
	else if(iSend == 0)
		return 0;
	else
		cout << "发送成功!\n";
	}
//	if(iSend == SOCKET_ERROR)
//	{
//		int temp = WSAGetLastError();
//	    cout << "iSend failed:"<<temp<<endl;
//	    break;
//	}
//	else if(iSend==0)
//	{
//		shutdown(sClient,SD_SEND);
//		break;
	
//	else{
//		  cout << "send()byte:"<<iSend<<endl;
//	    }*/
//	}
	
	//closesocket(sAccept );
 //   cout<<buf2;
    closesocket(sClient);
     WSACleanup();
//return 0;
	
}

⌨️ 快捷键说明

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