zoukankan      html  css  js  c++  java
  • 【linux】web socket

    贴代码其实是没什么用的,关键还是要~  使用这个模块或者这个架构时的注意事项? 这个也是开发比较关注的东西

    公司对于你的需求:高质量的实现他们需要的功能

    你对公司的需求:事情稳定不出岔子,不要加班。有时间做自己想做的事情

    所以你并不需要研究很深的理论,你只要找到稳定的库来使用。。。。。

    https://blog.csdn.net/waisock2017/article/details/78448427

    //server
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    
    
    typedef struct sockaddr SA;
    int main(int argc,char **argv)
    {
        int listenfd;    //也是以文件为操作,linux都是以文件为基础
        int confd;
    
        socklen_t clilen;
        struct sockaddr_in myaddr,cliaddr;
        char buf[50] = "Welcome";
    
        listenfd = socket(PF_INET,SOCK_STREAM,0)
        if(listenfd<0)
        {
            perror("fail to connect");
            exit(-1);
        }
    
    //数据初始化
        bzero(&myaddr,sizeof(myaddr));
        myaddr.sin_family = PF_INET;
        myaddr.sin_addr.s_addr = inet_addr("192.168.1.1"); //ip
        myaddr.sin_port = htons(8888); //端口号
    
    
    //绑定? 为什么要强制转换?
        if(bind(listenfd,(SA *)&myaddr,sizeof(myaddr))<0)
        {
            perror("fail to bind");
            exit(-1);
        }
        listen(listenfd,5);
    
        while(1)
        {
            confd = accept(listenfd,(SA *)&cliaddr,sizeof(cliaddr));
            printf("connection from %s,port %d
    ",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));
            send(connfd,buf,sizeof(buf),0);
            close(connfd);
        }
    
        return 0;
    }
    //client
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    
    
    typedef struct sockaddr SA;
    int main(int argc,char **argv)
    {
        int sockfd,nbyte;
        struct sockaddr_in servaddr,myaddr;
        char buf[50];
    
        sockfd = socket(PF_INET,SOCK_STREAM,0);
        if(sockfd<0)
        {
            perror("fail to connect
    ");
            exit(-1);
        }
    
        memset(0,&servaddr,sizeof(servaddr));
        servaddr.sin_family = PE_INET;
        servaddr.sin_addr.s_addr = inet_addr("192.168.1.1");  //server ip
        servaddr.sin_port = htons(8888);
    
        if(connect(sockfd,(SA *)&servaddr,sizeof(servaddr))<0)
        {
            perror("connect error");
            exit(-1);
        }
    
        if((nbyte = recv(sockfd,buf,50,0))<0)
        {
            perror("fail to recv");
            exit(-1);
        }
    
        printf("recv from server:%s
    ", buf);
    
        return 0;
    }

    主要就是一个结构体 

    struct sockaddr_in 
    以及几个函数的操作,对于超时网络异常等需要有异常的维护
  • 相关阅读:
    测试面试03
    测试面试02
    测试面试01
    测试10
    测试09
    Python 知识要点:变量 可变和不可变
    Python 知识要点:变量及引用
    Python 知识要点:名片管理系统 2.0
    Python 知识要点:多值参数
    Python 知识要点:四种数值交换方法
  • 原文地址:https://www.cnblogs.com/asreg/p/7153569.html
Copyright © 2011-2022 走看看