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;
}

原文链接: https://www.cnblogs.com/fensi/p/12214711.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/192087

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午5:56
下一篇 2023年2月12日 下午5:56

相关推荐