zoukankan      html  css  js  c++  java
  • Linux c++ socket编程 客户端 服务器

    服务器

    #include <iostream>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <unistd.h>
    #include <string.h>
    #include <stdlib.h>
     
    #define MAXLINE 4096
    #define SERVER_PORT 1234
     
    using namespace std;
     
    int main()
    {
        int listenfd,connfd;
        struct sockaddr_in seraddr;
        struct sockaddr_in cliaddr;
        char buff[MAXLINE] = {};
        int len;
     
        if (-1 == (listenfd = socket(PF_INET,SOCK_STREAM,0)))
        {
            cout<<"create socket failed!"<<endl;
            return 0;    
        }
        else
        {
           cout<<"create socket success!"<<endl;
        }
        
        memset(&seraddr,0,sizeof(seraddr));
        seraddr.sin_family = AF_INET;
        seraddr.sin_addr.s_addr = htonl(INADDR_ANY);
        seraddr.sin_port = htons(SERVER_PORT);
     
        if (-1==bind(listenfd,(struct sockaddr*)&seraddr,sizeof(seraddr)))
        {
            cout<<"bind socket failed!"<<endl;
            return 0;
        }
        else
        {
           cout<<"bind socket success!"<<endl;
        }
        
        
        if (-1==listen(listenfd,10))
        {
            cout<<"listen socket failed!"<<endl;
            return 0;
        }
        else
        {
           cout<<"listen socket success!"<<endl;
        }
     
        socklen_t clilen = sizeof(cliaddr);
        if (-1==(connfd = accept(listenfd,(struct sockaddr*)&cliaddr,&clilen)))
        {
            cout<<"accept socket failed!"<<endl;
            return 0;
        }
        else
        {
            cout<<"accept socket success!"<<endl;
        }
        while ((len = recv(connfd,buff,MAXLINE,0)>0))
        {
            cout<<"recv msg from client:"<<buff<<endl;
            if (0 == strcmp(buff,"quit"))
            {
                break;
            }
            memset(buff,0,MAXLINE);
        }
     
        close(connfd);
        close(listenfd);
     
        return 0;
    }

    客户端

    #include <iostream>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <unistd.h>
    #include <string.h>
    #include <stdlib.h>
    #include <arpa/inet.h>
     
    #define MAXLINE 4096
    #define SERVER_PORT 1234
    #define SERVER_ADDR "127.0.0.1"
     
    using namespace std;
     
    int main()
    {
        int clientfd;
        struct sockaddr_in seraddr;
        char buff[MAXLINE] = {};
     
        memset(&seraddr,0,sizeof(seraddr));
        seraddr.sin_family = AF_INET;
        seraddr.sin_port = htons(SERVER_PORT);
        seraddr.sin_addr.s_addr = inet_addr(SERVER_ADDR);
     
        if (-1==(clientfd = socket(PF_INET,SOCK_STREAM,0)))
        {
            cout<<"create socket error!"<<endl;
            return 0;
        }
        
        if (-1 == connect(clientfd,(struct sockaddr*)&seraddr,sizeof(seraddr)))
        {
            cout<<"connect failed"<<endl;
            return 0;
        }
        
        cin>>buff;
        while (0 != strcmp(buff,"quit"))
        {
            if (-1 == send(clientfd,buff,strlen(buff),0))
            {
                cout<<"send msg: ""<<buff<<" " success"<<endl;
            }
            memset(buff,0,MAXLINE);
            cin>>buff;
        }
        
        close(clientfd);
     
        return 0;
    }
  • 相关阅读:
    简单工厂笔记
    P3369 【模板】普通平衡树 Treap树堆学习笔记
    tp5阿里云短信验证码
    centos 安装php
    tp6.0.2开启多应用模式
    linux navicat最新版过期
    git commit之后 取消commit
    服务器重置之后ssh root@报错
    git pull push 每次都需要输入账号和密码
    跨域问题 php
  • 原文地址:https://www.cnblogs.com/fensi/p/12214711.html
Copyright © 2011-2022 走看看