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

📄 tcpdtc.cpp

📁 基本套接字编程 包括例程讲解和相关资料 网络课程用 很有价值
💻 CPP
字号:
/* TCPdtc.cpp - main, TCPdaytime */

#include <stdlib.h>
#include <stdio.h>
#include <winsock2.h>
#include <string.h>

void	TCPdaytime(const char *, const char *);
void	errexit(const char *, ...);
SOCKET	connectTCP(const char *, const char *);

#define	LINELEN		 128
#define WSVERS		MAKEWORD(2, 0)

/*------------------------------------------------------------------------
 * main - TCP client for DAYTIME service
 *------------------------------------------------------------------------
 */
int
main(int argc, char *argv[])         /* usage: TCPdaytime [host [port]]\n */
{                                    /*        host可以为服务器的IP地址或域名, port可以为服务器监听的端口号或服务名                           */
	char	*host = "localhost";	/* host to use if none supplied	*/
	char	*service = "daytime";	/* default service port		*/
	WSADATA wsadata;

	switch (argc) {
	case 1:
		host = "localhost";
		break;
	case 3:
		service = argv[2];
		/* FALL THROUGH */
	case 2:
		host = argv[1];
		break;
	default:
		fprintf(stderr, "usage: TCPdaytime [host [port]]\n");
		exit(1);
	}

	if (WSAStartup(WSVERS, &wsadata) != 0)   /* 启动某版本的DLL */
		errexit("WSAStartup failed\n");
	TCPdaytime(host, service);               /* 建立连接并传输数据 */
	WSACleanup();                            /* 卸载某版本的DLL */  
	printf("按任意键继续...");
	getchar();
	return 0;	/* exit */
}

/*------------------------------------------------------------------------
 * TCPdaytime - invoke Daytime on specified host and print results
 *------------------------------------------------------------------------
 */
void
TCPdaytime(const char *host, const char *service)
{
	char	buf[LINELEN+1];		    /* buffer for one line of text	*/
	SOCKET	s;		  	            /* socket descriptor		*/
	int	cc;			                           /* recv character count		*/

  	s = connectTCP(host, service);             /* 建立连接 */
	cc = recv(s, buf, LINELEN, 0);
	while( cc != SOCKET_ERROR && cc > 0) 
	{
		 buf[cc] = '\0';	                    /* ensure null-termination	*/
		 (void) fputs(buf, stdout);
		cc = recv(s, buf, LINELEN, 0);
	}
	closesocket(s);
}

⌨️ 快捷键说明

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