zoukankan      html  css  js  c++  java
  • Linux 网络编程一步一步学(三)循环读取服务器上的数据

        1 #include <stdio.h>
        2 #include <string.h>
        3 #include <errno.h>
        4 #include <sys/socket.h>
        5 #include <resolv.h>
        6 #include <stdlib.h>
        7 #include <netinet/in.h>
        8 #include <arpa/inet.h>
        9 #include <unistd.h>
       10 #define MAXBUF 10
       11 int main(int argc, char **argv)
    -  12 {
    |  13     int sockfd, ret;
    |  14     struct sockaddr_in dest, mine;
    |  15     char buffer[MAXBUF + 1];
    -  16     if (argc != 5) {
    2  17         printf("参数格式错误!正确用法如下:\n\t\t%s 对方IP 地址 对方端口 本机IP 地址 本机端口\n\t比如:\t%s 127.0.0.1 82     0\n此程序用来以本机固定的端口从某个 IP 地址的服务器某个端口接收最多MAXBUF 个字节的消息",argv[0], argv[0]);
    2  18         exit(0);
    2  19     }
    |  20     /* 创建一个 socket 用于 tcp 通信 */
    |  21     sockfd = socket(AF_INET, SOCK_STREAM, 0);
    |  22     /* 初始化服务器端(对方)的地址和端口信息 */
    |  23     bzero(&dest, sizeof(dest));
    |  24     dest.sin_family = AF_INET;
    |  25     dest.sin_port = htons(atoi(argv[2]));
    |  26     inet_aton(argv[1], (struct in_addr *) &dest.sin_addr.s_addr);
    |  27     /* 初始化自己的地址和端口信息 */
    |  28     bzero(&mine, sizeof(mine));                                                                                        
    |  29     mine.sin_family = AF_INET;
    |  30     mine.sin_port = htons(atoi(argv[4]));
    |  31     inet_aton(argv[3], (struct in_addr *) &mine.sin_addr.s_addr);
    |  32     /* 把自己的 IP 地址信息和端口与 socket 绑定 */
    |  33     bind(sockfd, (struct sockaddr *) &mine, sizeof(struct sockaddr));
    |  34     /* 连接服务器 */
    |  35     connect(sockfd, (struct sockaddr *) &dest, sizeof(dest));
    |  36     /* 接收对方发过来的消息,每次最多接收 MAXBUF 个字节,直到把对方发过来的所有消息接收完毕为止 */
    -  37     do {
    2  38         bzero(buffer, MAXBUF + 1);
    2  39         ret = recv(sockfd, buffer, MAXBUF, 0);
    2  40         printf("读到%d个字节,它们是:'%s'\n", ret, buffer);
    2  41     }while(ret==MAXBUF);
    |  42     /* 关闭连接 */
    |  43     close(sockfd);
    |  44     return 0;
    |  45 }
       46 
  • 相关阅读:
    【java基础知识】1
    【android】工程基本文件介绍
    【sqlite权威指南】笔记3 sqlite入门
    【sqlite权威指南】笔记2 sqlite介绍
    【sqlite权威指南】笔记1 概述
    【sqlite】1 start
    【操作系统】笔记8 存储器
    【操作系统】笔试7 汇编
    【操作系统】笔记6 java基本类型及运算
    【操作系统】笔记5
  • 原文地址:https://www.cnblogs.com/liqiu/p/2981220.html
Copyright © 2011-2022 走看看