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

📄 net.c

📁 另一种wput
💻 C
字号:
#include "wput.h"/* Verbosity level */#define PRINT_ALL       0#define PRINT_SOME      1#define PRINT_NOTHING   2int send_msg (char *msg, char *host, int port, int sport, int flag) {	int sd, rc, i;	struct sockaddr_in localAddr, servAddr;	struct hostent *h;	char buf[8192];#if defined _WIN32	WORD wVersionRequested = MAKEWORD(1,1);	WSADATA wsaData;	/* Init winsock: */	WSAStartup(wVersionRequested, &wsaData);#endif	/* resolve name */	h = gethostbyname(host);	if (h == NULL) {		printf("unknown host '%s'\n", host);		return (1);	}	/* fill in server socket structure: */	servAddr.sin_family = h->h_addrtype;	memcpy((char *) &servAddr.sin_addr.s_addr,		h->h_addr_list[0], h->h_length);	servAddr.sin_port = htons(port);	/* create socket */	sd = socket(AF_INET, SOCK_STREAM, 0);	if (sd < 0) {		perror("cannot open socket ");		return (1);	}	/* bind any port number */	localAddr.sin_family = AF_INET;	localAddr.sin_addr.s_addr = htonl(INADDR_ANY);	if (r_flag)		localAddr.sin_port = htons(sport);	else		localAddr.sin_port = htons(0);	rc = bind(sd, (struct sockaddr *) &localAddr, sizeof(localAddr));	if (rc < 0) {		printf("cannot bind port TCP %u\n", port);		perror("error ");		return (1);	}	/* connect to server */#if !defined _WIN32	alarm(t_flag);#endif	rc = connect(sd, (struct sockaddr *) &servAddr, sizeof(servAddr));#if !defined _WIN32	alarm(0);#endif	if (rc < 0) {		perror("cannot connect");		return (1);	}	/* send data */ 	rc = send(sd, msg, sizeof(char) * strlen(msg), 0);	if (rc < 0) {		perror("cannot send data ");		close(sd);		return (1);	}	/* get response */	memset(buf, 0, sizeof(buf));	switch (flag) {		/* print only the first line (HTTP status line..) */		case PRINT_SOME:#if !defined _WIN32			alarm(t_flag);#endif			rc = recv(sd, buf, sizeof(buf), 0);#if !defined _WIN32			alarm(0);#endif			if (rc < 0) {				perror("cannot recv data ");				close(sd);				return (1);			}			for (i = 0; buf[i] != '\n'; i++)				;			buf[i-1] = '\0';			printf("%s\n", buf);			break;		case PRINT_ALL:#if !defined _WIN32			alarm(t_flag);#endif			while ((rc = recv(sd, buf, sizeof(buf), 0)) != 0) {				if (rc < 0) {					perror("cannot recv data ");					close(sd);					return (1);				}				printf("%s", buf);				memset(buf, 0, sizeof(buf));			}#if !defined _WIN32			alarm(0);#endif			break;		case PRINT_NOTHING:			break;	}	close(sd);	return 0;}

⌨️ 快捷键说明

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