Chinaunix首页 | 论坛 | 博客
  • 博客访问: 230342
  • 博文数量: 48
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 412
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-24 10:27
个人简介

Continuous pursuit technical details

文章分类

全部博文(48)

文章存档

2014年(1)

2013年(47)

分类: C/C++

2013-12-10 15:11:17

#include
#include
#include
#include
#include
#include
#include
#include


#define MAXLINE 10240
#define SERV_PORT 9987


void do_cli(FILE *fp, int sockfd, struct sockaddr *pservaddr, socklen_t servlen)
{
        int n;
        char sendline[MAXLINE], recvline[MAXLINE + 1];


        /* connect to server */
        if(connect(sockfd, (struct sockaddr *)pservaddr, servlen) == -1)
        {
                perror("connect error");
                exit(1);
        }


        printf("Please specify the file you want to read... [exit to EXIT]\n>> ");
        while(fgets(sendline, MAXLINE, fp) != NULL)
        {
                if ( strcmp(sendline, "exit\n") == 0)
                {
                        break;
                }
                /* read a line and send to server */
                write(sockfd, sendline, strlen(sendline));
                /* receive data from server */
                n = read(sockfd, recvline, MAXLINE);
                if(n == -1)
                {
                        perror("read error");
                        exit(1);
                }
                recvline[n] = 0; /* terminate string */
                printf("\n[[ Detailed information of the file ]] \n");
                printf("=====================================\n");
                fputs(recvline, stdout);
                printf("\n\n");
                printf("Please specify the file you want to read... [exit to EXIT]\n>> ");
        }
}


int main(int argc, char **argv)
{
        int sockfd;
        struct sockaddr_in servaddr;


        /* check args */
        if(argc != 2)
        {
                printf("usage: udpclient \n");
                exit(1);
        }


        /* init servaddr */
        bzero(&servaddr, sizeof(servaddr));
        servaddr.sin_family = AF_INET;
        servaddr.sin_port = htons(SERV_PORT);
        if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
        {
                printf("[%s] is not a valid IPaddress\n", argv[1]);
                exit(1);
        }


        sockfd = socket(AF_INET, SOCK_DGRAM, 0);


        do_cli(stdin, sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));


        return 0;
}

阅读(1325) | 评论(0) | 转发(0) |
0

上一篇:udpserver.c

下一篇:udpserver2.c

给主人留下些什么吧!~~