既然要用c语言实现tcp协议,那我们就先看看什么是tcp协议,然后再去实践。tcp协议简介:传输控制协议(TCP,TransmissionControlProtocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。TCP旨在容纳支持多个网络应用程序的分层协议层次结构。TCP用于在连接到不同但互连的计算机通信网络的主机中的成对进程之间提供可靠的通信服务。TCP假定它可以从较低级别的协议获得简单的、可能不可靠的数据报服务。原则上,TCP应该能够在从硬连线连接到分组交换或电路交换网络的各种通信系统上运行。(以上介绍引自百度百科)https://baike.baidu.com/item/...了解了tcp之后,我们就要思考一下我们应该做什么。看了上面的内容,我的脑子里应该还是一头雾水吧。这里我找了一张比较清晰的图来总结一下。也就是说,我们把图片中的内容用代码表达出来,一切就搞定了。我先把完整的代码写出来,再介绍难点//socket#include#include//exit()#defineBUFFER_SIZE1024intmain(){charlisten_addr_str[]="0.0.0.0";size_tlisten_addr=inet_addr(listen_addr_str);内部端口=8080;intserver_socket,client_socket;结构sockaddr_inserver_addr,client_addr;socklen_t地址大小;charbuffer[BUFFER_SIZE];//缓冲区大小intstr_length;;//创建套接字bzero(&server_addr,sizeof(server_addr));//初始化server_addr.sin_family=INADDR_ANY;server_addr.sin_port=htons(端口);server_addr.sin_addr.s_addr=listen_addr;if(bind(server_socket,(structsockaddr*)&server_addr,sizeof(server_addr))==-1){printf("绑定失败\n");退出(1);}如果(听(服务器_socket,5)==-1){printf("监听失败\n");退出(1);}printf("创建tcp服务器成功\n");addr_size=sizeof(client_addr);client_socket=accept(server_socket,(structsockaddr*)&client_addr,&addr_size);printf("%d成功连接\n",client_socket);charmsg[]="恭喜你,连接成功";写(client_socket,味精,sizeof(味精));while(1){str_length=read(client_socket,buffer,BUFFER_SIZE);if(str_length==0)//读取数据后关闭socket{close(client_socket);printf("连接已关闭:%d\n",client_socket);休息;}else{printf("客户端发送数据:%s",buffer);write(client_socket,buffer,str_length);//发送数据}}return0;}好了,最简单的tcp就搞定了附:Linux网络常用头文件说明.h:提供sys/ioctl函数,用于设置和获取域名。h:提供I/O控制函数sys/poll.h:提供socket等待函数测试机制。