udp客户端与服务器通信协议,基于UDP协议下的客户端与服务器之间的通信

1、myhead.h

#ifndef _MYHEAD_H_

#define _MYHEAD_H_

#include #include #include #include #include #include #define MYPORT 6666

#define MYADDR "192.168.1.100"

#endif

2、udp_client.c

#include "myhead.h"

int main()

{

int sockfd = 0;

int ret = 0;

int recvcnt = 0;

int sendcnt = 0;

char recvbuff[20] = {0};

char sendbuff[20] = {0};

struct sockaddr_in server_addr;

sockfd = socket(AF_INET,SOCK_DGRAM,0);

if(sockfd == -1)

{

perror("socket");

return -1;

}

printf("socket sucessfully...\n");

bzero(&server_addr,sizeof(server_addr));

server_addr.sin_family = AF_INET;

server_addr.sin_port = htons(MYPORT);

server_addr.sin_addr.s_addr = inet_addr(MYADDR);

while(1)

{

memset(sendbuff,0,sizeof(sendbuff));

printf("plaese input data:\n");

scanf("%s",sendbuff);

//sendcnt = send(sockfd,sendbuff,strlen(sendbuff),0);

//sendcnt = write(sockfd,sendbuff,strlen(sendbuff));

sendcnt = sendto(sockfd,sendbuff,strlen(sendbuff),0,(struct sockaddr*)&server_addr,sizeof(server_addr));

if(sendcnt == -1)

{

perror("send");

}

else

{

printf("client send %d bytess :%s\n",sendcnt,sendbuff);

}

/*memset(recvbuff,0,sizeof(recvbuff));

recvcnt = read(sockfd,recvbuff,sizeof(recvbuff));

if(recvcnt == -1)

{

perror("recevive");

return -1;

}

else

{

printf("recieve %d bytes :%s\n",recvcnt,recvbuff);

}

*/

if(strcmp(sendbuff,"end") == 0)

{

break;

}

}

close(sockfd);

}3、udp_server.c

#include "myhead.h"

int main()

{

int sockfd = 0;

int ret = 0;

int recvcnt = 0;

int sendcnt = 0;

char recvbuff[20] = {0};

char sendbuff[20] = {0};

struct sockaddr_in server_addr;

struct sockaddr_in client_addr;

socklen_t len = sizeof(server_addr);

sockfd = socket(AF_INET,SOCK_DGRAM,0);

if(sockfd == -1)

{

perror("socket");

return -1;

}

printf("socket sucessfully...\n");

bzero(&server_addr,sizeof(server_addr));

server_addr.sin_family = AF_INET;

server_addr.sin_port = htons(MYPORT);

server_addr.sin_addr.s_addr = inet_addr(MYADDR);

ret = bind(sockfd,(struct sockaddr *)&server_addr,sizeof(server_addr));

if(ret == -1)

{

perror("bind");

return -1;

}

printf("bind sucessfully...\n");

while(1)

{

memset(recvbuff,0,sizeof(recvbuff));

//recvcnt = recv(clientfd,recvbuff,sizeof(recvbuff),0);

//recvcnt = read(clientfd,recvbuff,sizeof(recvbuff));

recvcnt = recvfrom(sockfd,recvbuff,sizeof(recvbuff),0,(struct sockaddr*)&client_addr,&len);

if(recvcnt == -1)

{

perror("receive");

return -1;

}

else

{

printf("receive %d bytes from client: %s\n",recvcnt,recvbuff);

}

if(strcmp(recvbuff,"end") == 0)

{

break;

}

}

close(sockfd);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值