简单的udp单人聊天程序

来源:互联网 发布:室内设计什么软件好 编辑:程序博客网 时间:2024/04/29 18:40

一个简单的udp单人聊天程序
客户端:

#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/socket.h>#include<sys/types.h>#include<arpa/inet.h>#include<netinet/in.h>#include<errno.h>int main(int argc,char **argv){    int skfd;    struct sockaddr_in seraddr;    skfd=socket(AF_INET,SOCK_DGRAM,0);    seraddr.sin_family=AF_INET;    seraddr.sin_addr.s_addr=inet_addr(argv[1]);    seraddr.sin_port=htons(atoi(argv[2]));    while(1){        int n;        n=sizeof(seraddr);        char buff[1024];        while(1){            bzero(buff,sizeof(buff));            fgets(buff,sizeof(buff),stdin);            sendto(skfd,buff,sizeof(buff),0,(struct sockaddr*)&seraddr,n);            bzero(buff,sizeof(buff));            recvfrom(skfd,buff,sizeof(buff),0,NULL,NULL);            printf("from ser:%s",buff);        }    }   

服务端:

#include<stdio.h>                                                               #include<unistd.h>#include<stdlib.h>#include<errno.h>#include<string.h>#include<sys/socket.h>#include<sys/types.h>#include<arpa/inet.h>#include<netinet/in.h>int main(int argc, char**argv){    int skfd;    struct sockaddr_in seraddr,cliaddr;    skfd=socket(AF_INET,SOCK_DGRAM,0);    seraddr.sin_family=AF_INET;    seraddr.sin_addr.s_addr=inet_addr(argv[1]);    seraddr.sin_port=htons(atoi(argv[2]));    bind(skfd,(struct sockaddr*)&seraddr,sizeof(struct sockaddr));    while(1){        char buff[1024];        int n,clisize;        while(1){            clisize=sizeof(cliaddr);            bzero(buff,sizeof(buff));            printf("the client id :%s,the port is:%d",inet_ntoa(cliaddr.sin_addr),cliaddr.sin_port);            printf("please put text to cli:");            fgets(buff,sizeof(buff),stdin);            sendto(skfd,buff,sizeof(buff),0,(struct sockaddr*)&cliaddr,clisize);             bzero(buff,sizeof(buff));             recvfrom(skfd,buff,sizeof(buff),0,(struct sockaddr*)&cliaddr,&clisize);            printf("the text is:%s",buff);        }    }}  
0 0