您的位置:首页 > 其它

简单的udp单人聊天程序

2017-03-19 21:30 393 查看
一个简单的udp单人聊天程序

客户端:

hljs cpp">#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
96fa
:%s",buff);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: