搭建一个tcp回射服务器,只要围绕着几个基本创建步骤写就好了
- 创建套接字
- 设置服务器地址信息
- 绑定地址和端口
- 开始监听
- 接受客户端链接
- 接受数据
- 发送数据回客户端
#define PORT 8088//设个端口
#define BUFF_SIZE 1024
int main(int argc, char* argv[])
{
//定义服务器,客服端套接字
int server_socket,client_socket;
//创建套接字
server_socket=socket(AF_INET,SOCK_STREAM,0);
//定义网络通信地址结构体
struct sockaddr_in server_addr,client_addr;
int buf[BUFF_SIZE];//存写读的
//设置服务器地址信息
server_addr.sin_family=AF_INET;//用来定义是哪种地址族,此为ipv4
server_addr.sin_addr.s_addr=INADDR_ANY;//转换服务器ip地址
server_addr.sin_port=htons(PORT);//用来保存端口号,htons函数是用来转换大小端的
//绑定地址和端口号
bind(server_socket,(struct sockaddr*)&server_addr,sizeof(server_addr));
//第一个参数是用socket()函数创建的文件描述符也就是前面的server_socket
//第2个参数指向一个结构为sockaddr参数的指针
//第三个是第二个参数的长度也就是sizeof(...)
//开始监听
listen(server_socket,64);//第二个参数是链接后的队列长度最大128
socklen_t len=sizeof(client_addr);//定义客户端地址的长度
//socklen_t是一种数据类型用于表示socket地址结构长度
//接受数据
client_socket=accept(server_socket,(struct sockaddr*)&client_addr,&len);
//服务器套接字,客户端地址,客户端地址长度
//接受的数据开读
int ret=read(client_socket,buf,sizeof(buf));
//发送数据回客户端
write(1,buf,sizeof(ret));
return 0;
}
注:此客户端链接后只能说一句话就会结束,想要多说可以加while(1)循环,然后还可以自己为一些重要步骤加个if判断什么的可以更好的实现程序的维护性。