参考: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’
然后再服务器端可以看到客户端输入的内容