本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
intro
-
本文将详细讲解一个简易echo服务器的实现
-
本文实现的简易echo服务器仅支持将用户在
客户端
的输入显示在服务器
-
使用C语言编写
-
文章中代码不附带错误检查,详细源码在这里
-
echo服务器
就像是网络编程的Hello World!
,是一定要掌握的 -
我的编码环境:
- OS:GUN/Linux Mint发行版
- IDE:vscode
- COMPILER:GCC
实现逻辑与效果
实现逻辑
效果预览
头文件与主要函数
头文件
- head.h
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define MAXBUFFER 256
主要函数
-
socket():系统调用创建一个新 socket
-
bind():系统调用将一个 socket 绑定到一个地址上。通常,服务器需要使用这个调用来将其 socket 绑定到一个众所周知的地址上使得客户端能够定位到该 socket 上
-
listen():系统调用允许一个 流socket 接受来自其他 socket 的接入连接
-
accept():系统调用在一个 监听流socket 上接受来自一个对等应用程序的连接, 并可选地返回对等 socket 的地址
-
connect():系统调用建立与另一个 socket 之间的连接
-
close():终止一个流 socket 连接
-
bzero():从 BSD 衍生出来的 bzero()函数是一个可以用来取代memset()对一个结构的内容进行清零的函数,但SUSv4规范已将其删除,本文为追求简单就使用它了
-
inet_pton():
p
为展现(presentation),n
为网络(network)- 展现形式是人类可读的形式,IPv4中点分十进制地址即为"展现的",例如
127.0.0.1
- 网络形式即为网络字节序的二进制IP地址,只有电脑可以理解
SHOW ME THE CODE
- server.c
#include "head.h"
int main(int argc, char **argv)
{
int serverFd, connfd;
int ret;
socklen_t len;
// 定义服务器结构体与客户端结构体
struct sockaddr_i