C++服务器开发1

1服务器开发代码

#include<sys/socket.h>
#include<sys/types.h>
#include<string.h>
#include<errno.h>
#include<stdio.h>
#include<stdlib.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
/* socket->bind->listen->accept->send/recv->close*/
int main()
{
    int socket_fd;
    int ret;
    char buff[1024];
    int lens;
    socket_fd = socket(AF_INET, SOCK_STREAM, 0);
    struct sockaddr_in server_addr;
    struct sockaddr_in client_addr;
    if (-1 == socket_fd)
    {
        fprintf(stderr, "socket error %s\n", strerror(errno)); // rerror
        exit(0);
    }
    int issockeopet = 1;
    //设置ip地址重复使用
    setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&issockeopet, sizeof(int));
    memset(&server_addr, 0, sizeof(struct sockaddr_in));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(8888);
    server_addr.sin_addr.s_addr = INADDR_ANY;//自动接受任意IP地址

    ret = bind(socket_fd, (const struct  sockaddr*)(&server_addr), sizeof(struct sockaddr));
    if (ret == -1)
    {
        fprintf(stderr, "bind error:%s\n", strerror(errno));
        exit(0);
    }
    if (listen(socket_fd, 10) == -1)
    {
        fprintf(stderr, "listen error:%s\n", strerror(errno));
        exit(0);
    }
    socklen_t len = sizeof(struct sockaddr_in);
    bzero(&client_addr, sizeof(struct sockaddr_in));
    int newfd = accept(socket_fd, (struct sockaddr*)&client_addr, &len);
    if (newfd == -1)
    {
        fprintf(stderr, "accept error:%s\n", strerror(errno));
        exit(0);
    }
    fprintf(stderr, "server connet form %s success\n", inet_ntoa(client_addr.sin_addr));
    while (true)
    {
        lens = read(newfd, buff, strlen(buff) + 1);
        if (lens == -1)
        {
            fprintf(stderr, "read error:%s\n", strerror(errno));
            exit(0);
        }
        printf("rev %s \n", buff);
    }
    close(newfd);
    close(socket_fd);
    return 0;
}

2.客户端开发代码

#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <string.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
//服务器的

int main(int argc, char* argv[])
{
    int sock_fd;
    int ret = 0;
    char buff[1024] = {0};
    struct sockaddr_in server_addr;
    if (argc != 2)
    {
        fprintf(stderr,"user:./ip:%s\n",argv[0]);
    }
    sock_fd = socket(AF_INET, SOCK_STREAM, 0);
    if (-1 == sock_fd)
    {
        fprintf(stderr, "socket error:%s\n\a", strerror(errno));
        exit(1);
    }
    memset(&server_addr, 0, sizeof(struct sockaddr_in));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(8888);
    ret =inet_aton(argv[1], &server_addr.sin_addr);
    if (0==ret)
    {
        fprintf(stderr, "server_ip set error:\n");
        close(sock_fd);
        exit(1);
    }
    //server_addr.sin_addr=
    ret=connect(sock_fd, (const struct sockaddr*)&server_addr, sizeof(struct sockaddr_in));
    if (-1==ret)
    {
        fprintf(stderr, "connect set error:%s\n", strerror(errno));
        close(sock_fd);
        exit(0);
    }
//发数据
    while (1)
    {
        if (fgets(buff, 1024, stdin))
        {
            int lens=write(sock_fd, buff, strlen(buff)+1);
            if (lens <= 0)
            {
                fprintf(stderr, "write set error:%s\n", strerror(errno));
                close(sock_fd);
                exit(1);
            }
        }
    }
    close(sock_fd);
    return 0;
}

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++服务器开发在当前和未来都有良好的前景。以下是关于C++服务器开发前景的一些观点: 1. 性能优势:C++是一种高效的编程语言,具有较低的内存占用和快速的执行速度。在服务器开发中,性能往往是一个关键因素,C++的优势可以使服务器应用程序更加高效、响应更快。 2. 多线程和并发支持:C++提供了强大的多线程和并发编程支持,可以轻松处理并发请求、多线程任务等。服务器开发往往需要处理大量的并发请求,C++的多线程特性使其成为开发服务器应用程序的理想选择。 3. 跨平台能力:C++具有很好的跨平台能力,可以在不同操作系统上进行服务器开发,如Windows、Linux、macOS等。这使得C++服务器应用程序能够更广泛地部署和运行于不同的环境中。 4. 应用领域广泛:服务器开发涉及到多个领域,如云计算、大数据、物联网、游戏服务器等。C++在这些领域都有广泛应用,因此具备了丰富的应用场景和机会。 5. 成熟的库和框架支持:C++拥有丰富的库和框架,如Boost、Poco、ACE等,这些库和框架可以加速服务器开发的过程,提高开发效率和可靠性。 6. 长期支持和维护:C++是一种长寿的编程语言,有着庞大的开发者社区和成熟的生态系统。这意味着C++服务器应用程序可以得到长期的支持、维护和更新,有助于保持应用程序的稳定性和可靠性。 综上所述,C++服务器开发具有出色的性能、跨平台能力和并发支持,广泛应用于多个领域。随着云计算、大数据、物联网等技术的发展,对高性能、可靠的服务器应用程序的需求将继续增加,因此C++服务器开发的前景非常乐观。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值