#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <errno.h>
#define SERV_PORT 33901
#define BUFFSIZE 1024
void dg_echo(int sockfd,struct sockaddr*pcliaddr,socklen_t clilen);
int main(int ac,char**av)
{
int sockfd;
struct sockaddr_in servaddr,clientaddr;
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd<0){
perror("socket");
exit(0);
}
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(SERV_PORT);
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
dg_echo(sockfd,(struct sockaddr*)&clientaddr,sizeof(clientaddr));
return 0;
}
void dg_echo(int sockfd,struct sockaddr* pcliaddr,socklen_t clilen)
{
int n;
socklen_t len;
while(1){
char mesg[BUFFSIZE];
bzero(mesg,sizeof(mesg));
len=clilen;
n=recvfrom(sockfd,mesg,BUFFSIZE,0,pcliaddr,&len);
if(n<0){
perror("recvfrom");
continue;
}
char servermsg[BUFFSIZE]="From server:";
int l=strlen(servermsg);
servermsg[l]=0;
strcat(servermsg,mesg);
sendto(sockfd,servermsg,n+l,0,pcliaddr,len);
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <errno.h>
#define SERV_PORT 33901
#define BUFFSIZE 1024
void dg_client(FILE*fp,int sockfd,const struct sockaddr*pserver,
socklen_t servlen);
int main(int ac,char**av)
{
int sockfd;
struct sockaddr_in servaddr;
socklen_t servlen=sizeof(servaddr);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(SERV_PORT);
inet_pton(AF_INET,av[1],&servaddr.sin_addr);
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd<0){
perror("socket");
exit(0);
}
dg_client(stdin,sockfd,(struct sockaddr*)&servaddr,servlen);
return 0;
}
void dg_client(FILE*fp,int sockfd,const struct sockaddr*pserver,
socklen_t servlen)
{
int n;
char sendline[BUFFSIZE],recvline[BUFFSIZE+1];
printf("From client:");
while(fgets(sendline,BUFFSIZE,fp)!=NULL){
sendto(sockfd,sendline,strlen(sendline),0,
pserver,servlen);
n=recvfrom(sockfd,recvline,BUFFSIZE,0,NULL,NULL);
if(n<0){
perror("recvfrom");
exit(0);
}
recvline[n]=0;
fputs(recvline,stdout);
printf("From client:");
}
}
obj=cl
all:
gcc $(obj).c -o $(obj)
clear:
rm -rf $(obj) $(obj).o
obj=se
all:
gcc $(obj).c -o $(obj)
clear:
rm -rf $(obj) $(obj).o
UDP回射
最新推荐文章于 2018-09-03 20:58:03 发布