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;
    }
  • 相关阅读:
    MySQL_基础_TCL事务控制语言
    MySQL_基础_DDL数据定义语言
    MySQL_基础_DQL数据查询语言
    MySQL_基础_DML数据操纵语言
    MySQL_基础_存储过程和函数
    MySQL_基础_变量
    linux 常用命令
    灵活QinQ示例
    RRPP 演示实例
    ERPS实例演示
  • 原文地址:https://www.cnblogs.com/fensi/p/12214711.html
Copyright © 2011-2022 走看看