实现简单linux服务器

参考:linux简单实现

简单功能:客户端输入什么,服务器显示什么

创建一个服务器实现socket通信,文件server.c

#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#define SERV_PORT 8000
int main(void){
        int lfd, cfd;
        struct sockaddr_in serv_addr, clin_addr;
        socklen_t clin_len; // 客户端返回数据长度
        char buf[1024];
        int len;

        // 使用AF_INET:iPv4, SOCK_STREAM:stream协议 ,默认0:tcp
        // lfd是服务器ip地址的索引
        lfd = socket(AF_INET, SOCK_STREAM, 0);
        
        // 构造IP地址
        serv_addr.sin_family = AF_INET;
        serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); // 绑定任意网卡
        serv_addr.sin_port = htons(SERV_PORT); // host to 网络序 -- 大端存储(高地址存低地址,低地址存高地址)

        // 绑定:IP + PORT 泛型指针 类似void*
        bind(lfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));

        // 监听
        listen(lfd, 128);


        // 服务器接受客户端信息
        clin_len = sizeof(clin_addr);
        cfd = accept(lfd, (struct sockaddr*)&clin_addr, &clin_len);
        len = read(cfd, buf, sizeof(buf)); // 读取信息
        // 标准输出信息
        write(STDOUT_FILENO, buf, len);

        close(lfd);
        close(cfd);
        return 0;
}

编译该文件,写一个简单的makefile文件

all:
    g++ server.c -0 serve

编译,输入make,得到可执行文件serve,执行

./serve

此刻服务器已经开启,监听信号,打开另一个客户端连接服务器,在客户端进行如下操作:

telnet 127.0.0.1 8000

输入内容 ‘hello’

然后再服务器端可以看到客户端输入的内容

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jasscical

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值