【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\n",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\n");
        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\n", buf);

    return 0;
}

主要就是一个结构体 

struct sockaddr_in 
以及几个函数的操作,对于超时网络异常等需要有异常的维护
posted @ 2017-07-12 07:54  asges林  阅读(196)  评论(0编辑  收藏  举报