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

📄 time.cpp

📁 <VC++网络游戏建摸与实现>源代码
💻 CPP
字号:
// time.cpp : Defines the entry point for the console application.
//


// client.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "winsock.h"
#include "stdlib.h"

void usage(char *name)
{
	fprintf(stderr, "usage: %s [ip [port]]\n", name);
}

int main(int argc,char *argv[])
{
	SOCKET sock;
	struct sockaddr_in sa;
	int err;
	int servport = 5555; /* 默认去连接的端口 */
	char buff[256]; /* 存放服务端返回的信息 */
	WSADATA wsd;
	unsigned long uladdr; /* 转换后的服务器地址 */
	printf("************************************************************\n");
	printf("*time client sample,written by suyu,chenyu\n");
	printf("*mail:webants@163.com                    \n");
	printf("************************************************************\n");
	if (argc > 3 || argc < 2) {
		usage(argv[0]);
		return -1;
	}

	if (argc > 1) {
		uladdr = inet_addr(argv[1]);
		if (uladdr == INADDR_NONE) {
			usage(argv[0]);
			return -1;
		}
	}

	if (argc == 3) {
		servport = atoi(argv[2]);
		if (servport > 65535 || servport < 1) { /* 如不是合法端口,则退出*/
			usage(argv[0]);
			return -2;
		}
	}

	/* 初始化Winsock1.1 */
	if (WSAStartup(MAKEWORD(1,1), &wsd) != 0) {
		printf("WSAStartup() failed !\n");
		return -3;
	}

	/* 创建连接套接字 */
	printf("create socket ...\n");
	sock = socket(AF_INET, SOCK_STREAM, 0);
	if (sock == INVALID_SOCKET) {
		fprintf(stderr, "socket() failed: %d\n", WSAGetLastError());
		return -4;
	}
	printf("[OK]\n");

	/* 填充要连接的服务器地址结构 */
	memset(&sa, 0, sizeof(sa));
	sa.sin_family			= AF_INET;
	sa.sin_port				= htons(servport);
	sa.sin_addr.S_un.S_addr	= uladdr;

	/* 连接服务器 */
	printf("connect ...\n");
	err = connect(sock, (const sockaddr *)&sa,sizeof(sa));
	if (err != 0) {
		fprintf(stderr, "connect() failed: %d\n", WSAGetLastError());
		return -5;
	}
	printf("[OK]\n");

	/* 接收返回的时间/日期信息 */
	printf("recv data ...\n");
	memset(buff, 0, sizeof(buff));
	if (recv(sock, buff, sizeof(buff), 0) == SOCKET_ERROR) {
		fprintf(stderr, " recv error !\n");
		return -1;
	}
	printf("[OK]\n");

/* 输出返回的信息 */
	printf("Server Date/time : \n%s\n", buff);
	
	closesocket(sock); /* 关闭连接套接字 */
	WSACleanup(); /* 释放资源 */
	return 0;
}

⌨️ 快捷键说明

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