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

📄 rcv.c

📁 一个linux下面的几个网络程序
💻 C
字号:
#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <time.h>#include <signal.h>#define MS		1000#define PORT		8000#define PKT_SIZE	256#define PKT_MAX		1int	pktcnt=0;void receive_proc(int sd){	time_t	last, curr, start;	char	buf[PKT_SIZE*2];	int	rcvlen;	int	lpktcnt=0;	struct	sockaddr_in from;	int	fromlen = sizeof(from);	last = start = time(0);		pktcnt = 0;	while(1) {		rcvlen = recvfrom(sd, buf, sizeof(buf), 0, 				 (struct sockaddr *)&from, &fromlen);		if(rcvlen<0){			perror("recvfrom()");			exit(1);		}		pktcnt++;		curr = time(0);		if(curr - last >= 10) {			printf("recieve: %d pkt, %lf pps\n", 				pktcnt, 1.0*(pktcnt-lpktcnt)/(curr-last));			last = curr;			lpktcnt = pktcnt;		}	}		}int create_sock(void){	int	sd;	struct	sockaddr_in sin;	sd = socket(AF_INET, SOCK_DGRAM, 0);	if(sd<0) {		perror("socket()");		return -1;	}	bzero(&sin, sizeof(sin));	sin.sin_family = AF_INET;/*	sin.sin_len = sizeof(sin); */	sin.sin_port = htons(PORT);	if(bind(sd, (struct sockaddr *)&sin, sizeof(sin))<0) {		perror("bind()");		return -1;	}	return sd;}void sigint(int sig){	printf("count = %d\n", pktcnt);	exit(0);}int main(int argc, char **argv){	pid_t	pid;	int	sd = create_sock();		signal(SIGINT, sigint);	if(sd<0) 		exit(1);	receive_proc(sd);	return 0;}

⌨️ 快捷键说明

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