我是靠谱客的博主 清秀时光,最近开发中收集的这篇文章主要介绍网络编程 1、TCP客户端服务端的编程模型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

  1. 客户端调用虚列
    1. 调用socket函数创建套接字
    2. 调用connect链接直服务端
    3. 调用I/O函数(write/read)与服务器进行通讯
    4. 调用close关闭套接字
//步骤一:创建socket
	int sockfd=socket(AF_INET,SOCK_STREAM,0);
	if(sockfd<0)
	{
		perror("sockert error");
		exit(1);
	}
	struct sockaddr_in serveraddr;
	memset(&serveraddr,0,sizeof(serveraddr));
	serveraddr.sin_family=AF_INET;
	serveraddr.sin_port=htons(atoi(argv[2]));
	//将ip地址转换成网络字节序 填入到serveraddr中
	inet_pton(AF_INET,argv[1],&serveraddr.sin_addr.s_addr);
//步骤二:connect 链接到服务器端;
	if(connect(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr))<0)
	{
		perror("connect error");
		exit(1);
	}
//步骤三 调用I/O函数
//和服务器断进行双向 通信;
	
	char buffer[1024];
	memset(buffer,0,sizeof(buffer));
	size_t size;
	if((size=read(sockfd,buffer,sizeof(buffer)))<0)
	{
		perror("read error");
		exit(1);
	}
	if(write(STDOUT_FILENO,buffer,size)!=size)
	{
		perror("write error");
	}
//步骤四 关闭套接字
	close(sockfd);
  1. 服务器端的调用序列
    1. 调用socket函数来创建套接字
    2. 调用bind函数绑定本地的地址和端口(familyportip);
    3. 调用listen()函数启动监听
    4. 调用accept函数从已经连接到队列中 提取客户连接
    5. 调用I/O函数与客户端进行通讯
    6. 调用close关闭套接字
	//步骤一:创建socket
	//创建在内核中;是一个结构体;
	//AF_INET:ipv4  
	//sock_stream :tcp 协议;
	sockfd=socket(AF_INET,SOCK_STREAM,0);
	

	//步骤二:将socket和地址绑定;包括(ip。port等)
	struct sockaddr_in serveraddr;
	memset(&serveraddr,0,sizeof(serveraddr) );
	//往地址中填入ip  port  internet地址足类型等
	serveraddr.sin_family=AF_INET;//ipv4;
	serveraddr.sin_port=htons(atoi(argv[1]));//port
	serveraddr.sin_addr.s_addr=INADDR_ANY;//"192.168.0.1";//监听所有的网卡上面的客户端的链接请求;
	if(bind(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr))<0)
	{
		perror("bind error");
		exit(1);
	}
	//步骤三  
	//调用listen 函数启动监听  制定port监听;
	//通知系统去接受来自客户端的链接请求;
	//及其昂接受到的客户端请求放置到对应的队列中
	//第二个参数: 指定队列的长度;
	if(listen(sockfd,10)<0)
	{
		perror("listen error");
		exit(1);
	}
	//步骤四:
	//调用 accept函数从队列之中获得一个客户端的请求链接
	//并且返回一个新的socket 描述符;针对客户端的;
	//如果没有客户端链接,调用这个函数会阻塞,直到获得一个客户端的链接;
	struct sockaddr_in clientaddr;
	socklen_t clientaddr_len=sizeof(clientaddr);
	while(1)
	{
		int fd=accept(sockfd,(struct sockaddr*)&clientaddr,&clientaddr_len);
		if(fd<0)
		{
			perror("accept error");
			exit(1);
		}
		//步骤五:利用I/O函数(write/read)
	//和链接的客户端进行双向的通信;
	
	out_addr(&clientaddr);
	do_service(fd);

	//步骤6  关闭socket;
	close(fd);
}

 

最后

以上就是清秀时光为你收集整理的网络编程 1、TCP客户端服务端的编程模型的全部内容,希望文章能够帮你解决网络编程 1、TCP客户端服务端的编程模型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部