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

📄 client.c

📁 UNIX下的服务器与客户端程序
💻 C
字号:
/*
*  client.c -- This is client program. Written by hanfi 2003-06-07
*  For *NIX 
*/
#include <string.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
#include <time.h>
#define BUF_LEN 255
extern int errno;

int main(int argc, char *argv[]) {
	int len, fromlen;
	struct protoent *protos;
	struct hostent *host;
	struct sockaddr_in saddr;
	char buf[BUF_LEN];
	int sock;struct sockaddr_in from;
	time_t tim;  
	protos = getprotobyname("udp");  
	switch (argc) {    
		case 1: 
			if ((host = gethostbyname("172.16.2.82")) == NULL) {
				printf("gethostbyname error\n");
				exit(-1);
			}      
		saddr.sin_port = htons(5555);
		break;
		case 3:	
		if ((host = gethostbyname(argv[1])) == NULL){ 
			printf("gethostbyname error\n");
			 exit(-1);      
			} 
		saddr.sin_port = htons(atoi(argv[2]));
		break;    
		default:      
		printf("Usage: clnt [host port]\n");      
		exit(-1);  
	}  
	saddr.sin_family = AF_INET;  
	bcopy(host->h_addr, &saddr.sin_addr, host->h_length);  
	if ((sock = socket(AF_INET, SOCK_DGRAM, protos->p_proto)) < 0) {    
		printf("socket call error\n");    
		exit(-1);  
	}  
	printf("IP = %s, Port = %d\n", inet_ntoa(saddr.sin_addr), ntohs(saddr.sin_port));  
	strcpy(buf, "TJB");  
	sendto(sock, buf, strlen(buf), 0, (struct sockaddr *)&saddr, sizeof(saddr));  
	if ((len=recvfrom(sock,&tim,sizeof(time_t),0, (struct sockaddr *)&from,&fromlen)) == -1){    
		printf("recvfrom error\n");    
		exit(-1);  
	}
	tim = ntohl(tim);  
	printf("%s\n", ctime(&tim));
}

⌨️ 快捷键说明

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