目录

简易TCP服务器搭建

简易TCP服务器搭建

目录


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

流式套接字

(SOCK_STREAM)

数据以字节流的方式进行传递,无大小限制.

保证数据可靠

,

无丢失

, 顺序发送.

主要用于

TCP

协议

.

一般情况下只要选择流式方式,那内核就会默认选择

TCP

传输层协议

数据报套接字

(SOCK_DGRAM )

主要通过数据报的方式发送,固定大小。不能保证数据可靠,

可能

丢失

,

乱序发送

.

主要用于

UDP

协议

.

一般情况下只要选择数据报方式,那内核就会默认选择

UDP

传 输层协议

原始套接字

(SOCK_RAW)

可以对较低层次协议如

IP

ICMP

直接访问

socket();

创建套接字

.

bind();

绑定套接字

listen();

监听

accept();

接收客户端连接请求

connect();

主动发送连接请求

close()

关闭套接字

read()/write();

数据收发

	//创建套接字
	int sockfd = socket(AF_INET, SOCK_STREAM, 0);
	if(sockfd == -1){
		perror("socket");
		exit(-1);
	}
//保存地址信息
	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地址,此处涉及两层结构体
//套接字绑定
	if( bind(sockfd, (struct sockaddr *)&addr, sizeof(addr) ) == -1){
		perror("bind");
		exit(-1);
	}
	printf("绑定成功\n");
	if( listen(sockfd, 5) == -1 ){
		perror("监听:");
		exit(-1);
	}
	printf("监听成功\n");
//接收客户端请求
	//获取通信(连接)套接字,后续通信使用通信套接字,不使用监听套接字
	int comfd = accept(sockfd, NULL, NULL);
	if(comfd == -1){
		perror("获取通信套接字");
		exit(-1);
	}
	printf("通信套接字获取成功(接收成功)\n");
//数据收发开始
	while(1){
		//memset(buf, 0, N);
		read(comfd, buf, N);
		puts(buf);
	
		//sleep(1);
	}
	
	//数据收发结束
	//关闭套接字
	close(comfd);
	close(sockfd);

服务器显示运行结果:

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

https://i-blog.csdnimg.cn/blog_migrate/bedc21faba321717c41fbb9b85c7013c.png

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

(1)、客户端

https://i-blog.csdnimg.cn/blog_migrate/e320b64dadeccf5d8e598f3ed799ff14.png

(2)、服务器

https://i-blog.csdnimg.cn/blog_migrate/b97ffb020083af1f7306aa4ad182d1b2.png

3、客户端发送数据

(1)客户端

https://i-blog.csdnimg.cn/blog_migrate/80e700fefb96c54b46e86cc065205726.png

(2)服务器

https://i-blog.csdnimg.cn/blog_migrate/4d09d43518d4d88ef5acea3ece487b21.png

4、多次测试结果

https://i-blog.csdnimg.cn/blog_migrate/40ee2e0b71dcc50e4df169c81168b920.png

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

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

https://i-blog.csdnimg.cn/blog_migrate/5888b6ea906eb18f5b689518c561c260.jpeg