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

📄 client.cpp

📁 基于C/S结构的Socket程序设计 即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行
💻 CPP
字号:
//**********头文件*******************************************
#include "..\include\functions.h"
int main(int argc, char* argv[])
{
	
	u_short port;
	char *pszHost;
	if (argc == 3) {
		pszHost = argv[1];
		port = atoi(argv[2]);
	}
    else {
		printf("Usage:\t Client [hostname] [PortNO.]");
		return -1;
	}
	system("cls");
	WSADATA wsaData;
	if(WSAStartup(MAKEWORD(2,1),&wsaData)!=0){ 
        PrintTime();printf("WSAStartup failed!\n");return -1;} 	
	char* HOSTIP=GetHostIP();		//本机IP地址
	if (HOSTIP==NULL){	
		PrintTime();printf("Can't get host address!\n");}
	SOCKET TCP_Sock;
	TCP_Sock = socket(AF_INET, SOCK_STREAM, 0);
	if (TCP_Sock == INVALID_SOCKET) {
        PrintTime();printf("Create Socket error!\n"); return -1;}                    
	sockaddr_in addr_srv; 
	addr_srv.sin_family = AF_INET;	
	addr_srv.sin_port = htons(port);
	addr_srv.sin_addr.s_addr=inet_addr(pszHost);
	if(connect(TCP_Sock, (struct sockaddr *)&addr_srv,sizeof(addr_srv))==INVALID_SOCKET){
		PrintTime();printf("Can't connect server %s:%d\n",pszHost,port);return -1;	}
	PrintTime();printf("Connected to the server %s:%d\n",pszHost,port);
	char* msg="GET UDP PORT";
	int len=strlen(msg)+1;
	if(send(TCP_Sock,msg,len,0)==SOCKET_ERROR )	printf("Send failed!");
	PrintTime();printf("Send \"GET UDP PORT\" to the server %s:%d\n",pszHost,port);
	char str_port[6];
	if(recv(TCP_Sock,str_port, 6,0)==SOCKET_ERROR)	printf("recv failed");	
	unsigned short udp_port=atoi(str_port);
	PrintTime();printf("UDP Port is %d,sent from Server %s:%d by TCP\n",udp_port,pszHost,port);
	printf("\nOption:\n1.Get current time(TCP)\n2.Echo Mode(UDP)\n3.Exit the program.\nInput operation number:");
	int input;
	scanf("%d",&input);
	while (input!=1&&input!=2&&input!=3)
	{
		printf("Wrong number!Try again!\n");
		printf("Input operation number:");
		scanf("%d",&input);
	}
	switch(input)
	{
	case 1:
		GetServerTime(TCP_Sock,pszHost,port);
		break;
	case 2:
		SOCKET UDP_Sock;
		if(InitSocket(UDP_Sock,HOSTIP,56103,SOCK_DGRAM)==SOCKET_ERROR) break;
		UDPEcho(UDP_Sock,pszHost,udp_port);
		break;
	case 3:
		break;
	default:
		break;
	}
	closesocket(TCP_Sock);
    WSACleanup();
    return 0;
}

⌨️ 快捷键说明

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