UDP客户端

#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>


#define SERV_PORT      9877
#define BUF_MAX_SIZE   1024


int main(int argc, char *argv[])
{
    socklen_t cli_addr_len;
    int sock_fd;
    struct sockaddr_in addr;
    int ret;
    char buffer[BUF_MAX_SIZE] = {0};
    ssize_t nwrite_bytes, nread_bytes;


    if (2 != argc)
    {
  printf("Usage: ./client <IP address>\n");
exit(EXIT_FAILURE);
    }


    sock_fd = socket(AF_INET, SOCK_DGRAM, 0);                 //创建 socket
    if (-1 == sock_fd)
    {
perror("socket");
exit(EXIT_FAILURE);
    }


    memset((struct sockaddr_in*)&addr, 0, sizeof(struct sockaddr_in));


    addr.sin_family = AF_INET;                                //指定 socket 域
    inet_aton(argv[1], &addr.sin_addr);                       //指定 IP
    addr.sin_port = htons(SERV_PORT);                         //指定 端口


    while (1)
    {
cli_addr_len = sizeof(addr); 
//fgets(buffer, BUF_MAX_SIZE, stdin);
scanf ("%s", buffer);
if (strncmp("end", buffer, 3) == 0)
{
break;
}


nwrite_bytes = sendto(sock_fd, buffer, strlen(buffer),0,(struct sockaddr *)&addr, cli_addr_len);
if (-1 == nwrite_bytes)
{
perror("sendto");
exit(EXIT_FAILURE);
}


printf("Request send to server\n");


nread_bytes = recvfrom(sock_fd, buffer, BUF_MAX_SIZE,0,(struct sockaddr *)&addr, &cli_addr_len);
if (-1 == nread_bytes)
{
perror("recvfrom");
exit(EXIT_FAILURE);
}


printf("Server say: ");
fputs(buffer, stdout);
printf ("\n");
    }


exit(EXIT_SUCCESS);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值