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

📄 talk.c

📁 基于UDP的局域网聊天程序
💻 C
字号:
/*这是我自己写的基于UDP的局域网内聊天的程序,实现了基本的通信功能,以后还要加上聊天记录和文件传送的功能 ,希望大家给提些意见,以便更好的改进,我的QQ为:346776910,邮箱为ufwihg@163.com,希望能和大家成为朋友,共同学习。在此向大家表示感谢!!*/#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include<arpa/inet.h>#include <string.h>#include<signal.h>#include<unistd.h>#include<fcntl.h>#include <setjmp.h>#include <time.h>int psock;void Qrecv(){	time_t timel;	struct tm tml;	char recvbuf[1024],ipbuf[16];	recvfrom(psock,recvbuf,1024,0,NULL,NULL);	time(&timel);	tml=*localtime(&timel);	printf("%02d:%02d:%02d\n",tml.tm_hour,tml.tm_min,tml.tm_sec);	printf("%s\n",recvbuf);	signal(SIGPOLL,Qrecv);}void Qsend(int psock,char *buff,char *ip){	char sendbuf[1024],buf[]="     ";//	long int ad;	struct sockaddr_in addrto;	memset(&addrto,0,sizeof(addrto));	addrto.sin_family = AF_INET;//	ad=inet_addr(ip);//	printf("%d\n",ad);	addrto.sin_addr.s_addr=inet_addr(ip);	addrto.sin_port=htons(2008);	strcpy(sendbuf,ip);	strcat(sendbuf,buf);	strcat(sendbuf,buff);	sendto(psock,sendbuf,sizeof(sendbuf),0,(struct sockaddr*)&addrto,sizeof(addrto));}void Qsinit(int psock){	int nType;//	sleep(1);//	printf("sdfas");	signal(SIGPOLL,Qrecv);	fcntl(psock,F_SETOWN,getpid());	nType=fcntl(psock,F_GETFL,0);	fcntl(psock,F_SETFL,nType|O_ASYNC);	}int main(int argc,char **argv){struct sockaddr_in addrlocal,addrto;char buff[1024]="我真牛!!!!";char ipbuf[20];jmp_buf env1;int i;memset(&addrlocal,0,sizeof(addrlocal));addrlocal.sin_family = AF_INET;//addrlocal.sin_addr.s_addr=inet_addr("192.168.1.100");addrlocal.sin_addr.s_addr=htonl(INADDR_ANY);addrlocal.sin_port=htons(2008);if((psock=socket(AF_INET,SOCK_DGRAM,0))<=0){	printf("socket err!\n");	exit(0);}bind(psock,(struct sockaddr*)&addrlocal,sizeof(addrlocal));Qsinit(psock);Qsend(psock,buff,"192.168.1.100");setjmp(env1);//gets(buff);fgets(buff,1024,stdin);if(strchr(buff,':')==0){	if(buff[0]=='e'|buff[0]=='E')	{		close(psock);		exit(1);	}	else	{		printf("\n输入格式错误,请重新输入!\n");	}}else{	for(i=0;*(buff+i)!=':';i++)	{		*(ipbuf+i)=*(buff+i);	}	*(ipbuf+i+1)='\0';//	printf("ipbuff=%s\n",ipbuf);/*	char ipa[sizeof(ipbuf)];	strcpy(ipa,ipbuf);	printf("asadf%d\n\n",inet_addr(ipa));*/	Qsend(psock,(buff+i+1),ipbuf);}longjmp(env1,1);close(psock);return 0;}

⌨️ 快捷键说明

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