泰安吧,重庆优化官网服务,做业务有哪些好的网站,南阳建网站公司TCP客户端的实现流程#xff1a;一、创建套接字#xff08;socket函数#xff09;#xff1a;通信域选择IPV4网络协议、流式套接字#xff1b; int sockfd socket(AF_INET,SOCK_STREAM,0); 二、填充服务器的网络信息结构体#xff08;struct sockaddr_in serveraddr一、创建套接字socket函数通信域选择IPV4网络协议、流式套接字 int sockfd socket(AF_INET,SOCK_STREAM,0); 二、填充服务器的网络信息结构体struct sockaddr_in serveraddr1.定义网络信息结构体变量2.求出结构体变量的内存空间大小3.结构体清零4.使用IPV4网络协议5.预留给在终端输入的网络字节序的端口号6.预留给在终端输入的IP地址 struct sockaddr_in serveraddr; socklen_t serveraddrlen sizeof(serveraddr);memset(serveraddr,0,serveraddrlen); serveraddr.sin_family AF_INET; serveraddr.sin_addr.s_addr inet_addr(argv[1]); serveraddr.sin_port htons(atoi(argv[2]));三、与服务器端建立连接connect函数 int ret connect(sockfd,(struct sockaddr *)serveraddr,serveraddrlen);四、向服务器发送数据send函数和接收来自服务器端的应答消息recv函数 //向服务器发送数据send(sockfd,buf,sizeof(buf),0);//接收来自服务器端的应答消息recv(sockfd,buf,sizeof(buf),0);printf(应答[%s]\n,buf);五、关闭套接字close函数 close(sockfd);综合应用实例代码如下所示
//tcp客户端#include stdio.h
#include sys/types.h
#include sys/socket.h
#include stdlib.h
#include netinet/in.h
#include netinet/ip.h
#include string.h
#include arpa/inet.h
#include unistd.h#define ERRLOG(msg) do{\printf(%s:%s:%d\n, __FILE__, __func__, __LINE__);\perror(msg);\exit(-1);\}while(0)int main(int argc, char const *argv[])
{//入参合理性检查if(3 ! argc){printf(Usage : %s IP port\n,argv[0]);exit(-1);}//创建套接字int sockfd socket(AF_INET,SOCK_STREAM,0);if(-1 sockfd){ERRLOG(socket error);}printf(sockfd %d\n,sockfd);//填充服务器网络信息结构体struct sockaddr_in serveraddr;socklen_t serveraddrlen sizeof(serveraddr);memset(serveraddr,0,serveraddrlen);serveraddr.sin_family AF_INET;serveraddr.sin_addr.s_addr inet_addr(argv[1]);serveraddr.sin_port htons(atoi(argv[2]));//与服务器建立连接if(-1 connect(sockfd,(struct sockaddr *)serveraddr,serveraddrlen)){ERRLOG(connect error);}printf(与服务器连接成功\n);//收发数据char buf[128] {0};while(1){memset(buf,0,128);//在终端获取数据fgets(buf,128,stdin);buf[strlen(buf)-1] \0;//清理结尾的\n//把数据发给服务器if(-1 send(sockfd,buf,sizeof(buf),0)){ERRLOG(send error);}if(!strncmp(buf,quit,4)){break;}//接受服务器发回来的应答消息memset(buf,0,sizeof(buf));if(-1 recv(sockfd,buf,sizeof(buf),0)){ERRLOG(recv error);}//打印应答消息printf(应答[%s]\n,buf);}//关闭套接字close(sockfd);return 0;
}
本示例代码仅供参考