zoukankan      html  css  js  c++  java
  • 1. Socket网络编程

    1. 借助服务器实现小写转大写的程序:

      客户端:发送任意小写字母到服务器端。

      服务器端:接收小写字母,转为大写,回传给客户端,然后客户端显示到屏幕。

      

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/socket.h>
    #include <stdlib.h>
    #include <arpa/inet.h>    //结构体struct sockaddr_in的头文件
    #include <ctype.h>        //toupper()函数头文件
    
    #define SERV_IP "127.0.0.1"    //IP地址
    #define SERV_PORT 6666        //端口号不能大于65535,1000以下的端口号一般给系统使用,用户使用端口号一般从3000以上
    
    int main(void)
    {
        int lfd, cfd;
        struct sockaddr_in serv_addr, clie_addr;
        socklen_t clie_addr_len;
        char buf[BUFSIZ];//操作系统内嵌的宏BUFSIZ,指定buf大小
        int n, i;
    
        lfd = socket(AF_INET, SOCK_STREAM, 0);
    
        //初始化结构体
        serv_addr.sin_family = AF_INET;                    //ipv4
        serv_addr.sin_port = htons(SERV_PORT);             //htons端口号转化(本地host转为网络network)
        serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);    //htonl IP地址转化(本地host转为网络network) INADDR_ANY表示本地有效任意IP(直接就是数值类型)
    
        bind(lfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
    
        listen(lfd, 128);//同时允许128个客户端向我发起连接(默认值为128,最大上限就是128)
    
        clie_addr_len = sizeof(clie_addr);//求出客户端clie_addr结构体(IP、端口)的长度
        cfd = accept(lfd, (struct sockaddr *)&clie_addr, &clie_addr_len);//阻塞等待
    
        while (1) {
            n = read(cfd, buf, sizeof(buf));//n为实际读到的字节
            for (i = 0; i < n; i++)
                buf[i] = toupper(buf[i]);    //小写转为大写
            write(cfd, buf, n);
        }
    
        close(lfd);//关闭文件描述符
        close(cfd);
    
        return 0;
    }

      开启两个终端,终端1编译并执行服务端程序:

        

      此时服务器程序运行到accept(),并阻塞等待。

      终端2执行:

        

      nc命令中,n代表Network,c代表Connect <nc简称“脑残”>

      常用nc来测试服务端程序。

  • 相关阅读:
    Install JDK In Ubuntu
    js初学—实现checkbox全选功能
    js初学—js全自定义单选框
    poj1679The Unique MST(次小生成树模板)
    hdu3486Interviewe(二分是错的)(ST算法RMQ + 判定上下界枚举)
    poj3974 Palindrome(Manacher最长回文)
    poj1734 Sightseeing trip(Floyd求无向图最小环)
    BZOJ1123 [POI2008]BLO(割点判断 + 点双联通缩点size)
    2.2 logistic回归
    神经网络的火热
  • 原文地址:https://www.cnblogs.com/si-lei/p/9656834.html
Copyright © 2011-2022 走看看