服务器端:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<arpa/inet.h>
int main(){
//创建一个通信的socket
int fd = socket(PF_INET,SOCK_DGRAM,0);
if(fd==0){
perror("socket");
exit(-1);
}
struct sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_port=htons(9999);
addr.sin_addr.s_addr=INADDR_ANY;
//绑定
int ret = bind(fd,(struct sockaddr *)&addr,sizeof(addr));
if(ret==-1){
perror("bind");
exit(-1);
}
//通信
while (1)
{
char recvbuf[128];
char ipbuf[16];
struct sockaddr_in cliaddr;
int len=sizeof(cliaddr);
//接收数据
int num = recvfrom(fd,recvbuf,sizeof(recvbuf),0,(struct sockaddr *)&cliaddr,&len);
printf("client ip :%s,port: %d\n",
inet_ntop(AF_INET,&cliaddr.sin_addr.s_addr,ipbuf,sizeof(ipbuf)),ntohs(cliaddr.sin_port));
printf("client say:%s\n",recvbuf);
//发送数据
sendto(fd,recvbuf,strlen(recvbuf)+1,0,(struct sockaddr *)&cliaddr,sizeof(cliaddr));
}
close(fd);
return 0;
}
客户端:
ps(记得将IP地址修改为Linux本机的IP地址,先启动服务器端,再启动客户端)
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<arpa/inet.h>
int main(){
//创建一个通信的socket
int fd = socket(PF_INET,SOCK_DGRAM,0);
if(fd==0){
perror("socket");
exit(-1);
}
//服务器的地址信息
struct sockaddr_in saddr;
saddr.sin_family=AF_INET;
saddr.sin_port=htons(9999);
inet_pton(AF_INET,"192.168.154.139",&saddr.sin_addr.s_addr);
int num=0;
//通信
while (1)
{
char sendbuf[128];
sprintf(sendbuf,"hello,i am client %d\n",num++);
//发送数据
sendto(fd,sendbuf,strlen(sendbuf)+1,0,(struct sockaddr *)&saddr,sizeof(saddr));
//接收数据
int num = recvfrom(fd,sendbuf,sizeof(sendbuf),0,NULL,NULL);
printf("server say:%s\n",sendbuf);
sleep(1);
}
close(fd);
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)