UDP客户-服务程序

本文档展示了UDP客户端和服务器程序的实现,包括服务器端和客户端的代码。讨论了存在的问题,如不可靠的数据传输、接收超时、多宿主服务器的响应验证以及端口不可达的错误处理。提出了解决方案,如在客户端使用recvfrom设置超时,服务器端针对多宿主环境的优化等。
摘要由CSDN通过智能技术生成

UDP 客户-服务器程序


udp服务器程序

#include <sys/types.h>

#include <sys/socket.h>

#include <sys/wait.h>

#include <netinet/in.h>

#include <sys/stat.h>

#include <stdio.h>

#include <stdlib.h>

#include <errno.h>

#include <strings.h>

#include <signal.h>

#include <unistd.h>


#define MAXLINE 4096

#define SERV_PORT 9877

#define LISTENQ 1024

#define SA struct sockaddr


void dg_echo(int sockfd,SA*pcliaddr,socklen_t clilen);

int main(int argc,char **argv)

{

int sockfd;

struct sockaddr_in cliaddr,servaddr;


sockfd=socket(AF_INET,SOCK_DGRAM,0);


bzero(&servaddr,sizeof(servaddr));

servaddr.sin_family=AF_INET;

servaddr.sin_addr.s_addr=htonl(INADDR_ANY);

servaddr.sin_port=htons(SERV_PORT);

bind(sockfd,(SA*)&servaddr,sizeof(servaddr));


dg_echo(sockfd,(SA*)&cliaddr,sizeof(cliaddr));


exit(0);

}


void dg_echo(int sockfd,SA*pcliaddr,socklen_t clilen)

{

int n;

socklen_t len;

char mesg[MAXLINE];


for(;;){

len=clilen;

n=recvfrom(sockfd,mesg,MAXLINE,0,pcliaddr,&len);

sendto(sockfd,mesg,n,0,pcliaddr,len);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值