简易TCP服务器搭建

这篇具有很好参考价值的文章主要介绍了简易TCP服务器搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、套接字及其分类

二、相关接口函数

三、TCP服务器搭建流程

1、创建套接字socket()

2、保存服务器信息

3、套接字绑定

4、监听客户端连接请求

5、接收客户端连接请求

6、数据收发

7、关闭套接字

四、运行结果


一、套接字及其分类

        所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口

流式套接字 (SOCK_STREAM)
        数据以字节流的方式进行传递,无大小限制. 保证数据可靠 , 无丢失 , 顺序发送. 主要用于 TCP 协议 . 一般情况下只要选择流式方式,那内核就会默认选择 TCP 传输层协议
数据报套接字 (SOCK_DGRAM )
        主要通过数据报的方式发送,固定大小。不能保证数据可靠, 可能
丢失 , 乱序发送 . 主要用于 UDP 协议 . 一般情况下只要选择数据报方式,那内核就会默认选择 UDP 传 输层协议
原始套接字 (SOCK_RAW)
         可以对较低层次协议如 IP ICMP 直接访问

二、相关接口函数

socket(); 创建套接字 .
bind(); 绑定套接字
listen(); 监听
accept(); 接收客户端连接请求
connect(); 主动发送连接请求
close() 关闭套接字
read()/write(); 数据收发

三、TCP服务器搭建流程

1、创建套接字socket()

	//创建套接字
	int sockfd = socket(AF_INET, SOCK_STREAM, 0);
	if(sockfd == -1){
		perror("socket");
		exit(-1);
	}

2、保存服务器信息

//保存地址信息
	struct sockaddr_in addr;//该结构体用于保存某个网络地址
	
	addr.sin_family = AF_INET;//设置地址族为IPV4
	addr.sin_port = htons(9090);//设置端口号
	addr.sin_addr.s_addr = inet_addr("192.168.22.84");//分配IP地址,此处涉及两层结构体

3、套接字绑定

//套接字绑定
	if( bind(sockfd, (struct sockaddr *)&addr, sizeof(addr) ) == -1){
		perror("bind");
		exit(-1);
	}
	printf("绑定成功\n");

4、监听客户端连接请求

	if( listen(sockfd, 5) == -1 ){
		perror("监听:");
		exit(-1);
	}
	printf("监听成功\n");

5、接收客户端连接请求

//接收客户端请求
	//获取通信(连接)套接字,后续通信使用通信套接字,不使用监听套接字
	int comfd = accept(sockfd, NULL, NULL);
	if(comfd == -1){
		perror("获取通信套接字");
		exit(-1);
	}
	printf("通信套接字获取成功(接收成功)\n");

6、数据收发

//数据收发开始
	while(1){
		//memset(buf, 0, N);
		read(comfd, buf, N);
		puts(buf);
	
		//sleep(1);
	}
	
	//数据收发结束

7、关闭套接字

	//关闭套接字
	close(comfd);
	close(sockfd);

四、运行结果

服务器显示运行结果:

 1、单独运行服务器,客户端未连接

简易TCP服务器搭建

2、客户端连接服务器,但未发送数据

(1)、客户端

简易TCP服务器搭建

(2)、服务器

简易TCP服务器搭建

3、客户端发送数据

(1)客户端

简易TCP服务器搭建

 (2)服务器

简易TCP服务器搭建

4、多次测试结果

简易TCP服务器搭建

好的,以上就是本期内容了!!!

欢迎大家参考,指正!!!

简易TCP服务器搭建文章来源地址https://www.toymoban.com/news/detail-417020.html

到了这里,关于简易TCP服务器搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TCP流套接字编程(模拟多个客户端与服务器交互)

    目录 一、ServerSocket API 1.1、ServerSocket构造方法 1.2、ServerSocket方法 二、Socket API  2.1、socket构造方法  2.2、socket方法 三、TCP 中的长短连接 四、示例  实现聊天室功能 五、存在的问题  ServerSocket 是创建TCP服务端Socket的API。 1.1、ServerSocket构造方法 方法签名 方法说明 ServerSocket

    2024年02月13日
    浏览(31)
  • psql: 错误: 连接到套接字“/var/run/postgresql/.s.PGSQL.5432“上的服务器失败:没有那个文件或目录服务器是否在本地运行并接受该套接字上的连接?

    查看 Postgresql 日志文件: 编码引起的报错,选择相应的编码支持。 这里我的是 en_US.UTF-8 查看一下本机所支持的所有编码 可见目前并不支持 en_US.UTF-8 ,所以先试着添加该支持,用命令: 通过空格选中 en_US.UTF-8 该编码格式,并确定。确定之后,系统环境默认的区域设置中会有

    2024年02月13日
    浏览(33)
  • [Linux] 网络编程 - 初见TCP套接字编程: 实现简单的单进程、多进程、多线程、线程池tcp服务器

    网络的上一篇文章, 我们介绍了网络变成的一些重要的概念, 以及 UDP套接字的编程演示. 还实现了一个简单更简陋的UDP公共聊天室. [Linux] 网络编程 - 初见UDP套接字编程: 网络编程部分相关概念、TCP、UDP协议基本特点、网络字节序、socket接口使用、简单的UDP网络及聊天室实现…

    2024年02月16日
    浏览(52)
  • 【网络编程】(TCP流套接字编程 ServerSocket API Socket API 手写TCP版本的回显服务器 TCP中的长短连接)

    TCP提供的API主要是两个类:ServerSocket 和 Socket . TCP不需要一个类来表示\\\"TCP数据报\\\"因为TCP不是以数据报为单位进行传输的.是以字节的方式,流式传输 ServerSocket API ServerSocket 是专门给服务器使用的Socket对象. ServerSocket 构造方法: ServerSocket(int port) 创建一个服务端流套接字Socket,并绑

    2024年02月12日
    浏览(46)
  • 计算机网络套接字编程实验-TCP多进程并发服务器程序与单进程客户端程序(简单回声)

    1.实验系列 ·Linux NAP-Linux网络应用编程系列 2.实验目的 ·理解多进程(Multiprocess)相关基本概念,理解父子进程之间的关系与差异,熟练掌握基于fork()的多进程编程模式; ·理解僵尸进程产生原理,能基于|sigaction()或signal(),使用waitpid()规避僵尸进程产生; ·

    2024年02月12日
    浏览(36)
  • 计算机网络套接字编程实验-TCP单进程循环服务器程序与单进程客户端程序(简单回声)

    1.实验系列 ·Linux NAP-Linux网络应用编程系列 2.实验目的 ·理解并掌握在程序运行时从命令行读取数据的C语言编程方法; ·理解并掌握基于命令参数设置并获取IP与Port的C语言编程方法; ·理解并掌握套接字地址的数据结构定义与地址转换函数应用; ·理解并掌握网络字节序

    2024年02月11日
    浏览(79)
  • 简易TCP服务器搭建

    目录 一、套接字及其分类 二、相关接口函数 三、TCP服务器搭建流程 1、创建套接字socket() 2、保存服务器信息 3、套接字绑定 4、监听客户端连接请求 5、接收客户端连接请求 6、数据收发 7、关闭套接字 四、运行结果         所谓套接字(Socket),就是对网络中不同主机上的

    2023年04月18日
    浏览(47)
  • 兼容流式套接字与数据报 套接字的回射服务器

    实验流程: 1)设计基于select模型的双协议服务器方案 创建套接字:为每种协议创建一个套接字(例如,TCP和UDP)。 绑定套接字:将套接字绑定到指定的端口上。 设置套接字选项:为每个套接字设置相应的选项,例如允许重用地址、设置超时时间等。 监听套接字:对于TCP套

    2024年04月16日
    浏览(36)
  • 【Linux后端服务器开发】socket套接字

    目录 一、socket 套接字概述 二、socket 函数接口 三、IP地址与端口号的网络格式 四、TCP协议的本地通信C语言示例 socket 是什么? socket 本质上是一个抽象的概念,它是一组用于 网络通信的 API , 提供了一种统一的接口 ,使得应用程序可以通过网络进行通信。在不同的操作系统

    2024年02月16日
    浏览(27)
  • 网络编程套接字(二)之UDP服务器简单实现

    目录 一、服务端UdpServer 1、udp_server.hpp 1、服务器的初始化 2、服务器的运行 2、udp_server.cc 二、客户端UdpClient udp_client.cc 三、完整代码 首先,我们在该文件中,将服务器封装成一个类,而作为一款服务器,必须要有自己的端口号,同时网络服务器需要有对应的IP地址,文件描述

    2024年04月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包