当前位置:首页 > CN2资讯 > 正文内容

云服务器配置 UDP通讯 云服务器通信

7小时前CN2资讯


基于阿里云服务器的socket通信

该实验是阿里云与ubuntu之间的socket通信可以实现双方的消息传递如下

一、阿里云服务器可以自行去官网下载(学生的话28块钱3个月)

https://www.aliyun.com/activity/new?utm_content=se_1009243113

1.1进入官网后,完成相关的信息注册与认证(学生等认证)后,如果是学生可直接在搜索栏输入“成长计划”

以下是服务器的购买流程:

 

二、购买服务器后,进入远程连接 后可以有一个终端操作界面,我买的linux的服务器,因此操作是

平常linux的类似。

 

可以通过宝塔面板来连接界面如下

三、话不多说,进行代码的编写,先是云服务端的socket代码的配置编写

#include<stdio.h> #include <unistd.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<stdlib.h> #include<string.h> int main() { int s_fd; int c_fd; int n_read; char readBuf[128]; // char *msg = "I get your connect"; char msg[128] = {0}; struct sockaddr_in s_addr; struct sockaddr_in c_addr; memset(&s_addr,0,sizeof(struct sockaddr_in)); //数据的清空,清空完配置 memset(&c_addr,0,sizeof(struct sockaddr_in)); //1.socket s_fd=socket(AF_INET,SOCK_STREAM,0); if(s_fd == -1){ perror("socket"); exit(-1); } s_addr.sin_family= AF_INET; s_addr.sin_port = htons(8000); //端口号 该端口号需要网络与安全->安全组中先创建好 inet_aton("内网的ip",&s_addr.sin_addr); //IP地址 注意ip地址是内网的ip地址,把字符串形式的“192.168**”转化为网络能识别的格式 //2.bind bind(s_fd,(struct sockaddr *)&s_addr,sizeof(struct sockaddr_in));//Bind()函数:IP号端口号与相应描述字赋值函数,用于绑定IP地址和端口号到socketfd //3.listen listen(s_fd,10); //监听设置函数 //4.accept int length = sizeof(struct sockaddr_in); //计算长度 while(1) //循环等候连接服务器 { c_fd =accept(s_fd,(struct sockaddr *)&c_addr,&length); //accept函数由TCP服务器调用,用于从已完成的连接队列对头返回下一个已完成连接,如果已完成的队列为空,那么进程被投入睡眠。 if(c_fd == -1){ perror("accept"); } if(fork() == 0) //创建一个子进程使他和服务器进行read的操作 { while(1) { printf("gte connect: %s\n",inet_ntoa(c_addr.sin_addr)); n_read = read(c_fd,readBuf,128); //在套接字通性中进行字节读取函数: read(); if(n_read == -1) { perror("read"); }else{ printf("get message:%d %s\n",n_read,readBuf); } } } if(fork()==0) //创建一个子进程使它和服务器进行write的操作 { while(1) { memset(msg,0,sizeof(msg)); printf("Input:"); fgets(msg,sizeof(msg),stdin); write(c_fd,msg,strlen(msg)); } } } return 0; }

注意1:阿里云端服务器socket绑定阿里云的内网地址(可inconfig来查),要连接阿里云服务器的客户端的socket要设置为阿里云的公网地址

注意2:云服务器里的socket代码端口要提前配好    在   安全--》防火墙(如下图一)里配置可添加规则端口,查看是否添加,可在windows->cmd中输入telnet +公网ip+端口               号

              用宝塔的话可在安全里查看放行端口(如下图二)

 

添加完成后将该端口拉入防火墙

     1.开启防火墙

systemctl start firewalld

    2设置打开的端口号(永久打开)

firewall-cmd --add-port=8000/tcp --permanent

     3.更新,端口的设置

firewall-cmd --reload

      4.查看已经打开的端口

firewall-cmd --list-all

这样就可以使用云服务器的公网ip与设置的端口号,与其他网络进行连接了

 

四、客户端的client的代码

#include<stdio.h> #include <unistd.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<stdlib.h> #include<string.h> int main() { int c_fd; int n_read; char readBuf[128]; char msg[128]= {0} ; struct sockaddr_in c_addr; memset(&c_addr,0,sizeof(struct sockaddr_in)); c_fd = socket(AF_INET,SOCK_STREAM,0); //创建套接字 if(c_fd == -1) { perror("connect"); exit(-1); } c_addr.sin_family = AF_INET; c_addr.sin_port = htons(8000); //这里要填自己写在服务器里已经添加过的端口号 inet_aton("公网ip",&c_addr.sin_addr); 注意这里要填阿里云服务器的公网ip if(connect(c_fd,(struct sockaddr *)&c_addr,sizeof(struct sockaddr))== -1) //客户端的connect函数该函数用于绑定之后的client端(客户端),与服务器建立连接 { perror("connect"); } while(1) { //3.write() if(fork() == 0) //创建一个子进程与服务端进行write的操作 { while(1) { memset(msg,0,sizeof(msg)); printf("Input:\n"); fgets(msg,sizeof(msg),stdin); write(c_fd,msg,strlen(msg)); } } //4 // n_read = read(c_fd,readBuf,sizeof(readBuf)); //客户端对服务端进行read的读取 if(n_read == -1){ perror("read"); }else{ printf("get message from server:%d,%s\n",n_read,readBuf); } } return 0; }

 

五、运行后的效果

是ubuntu的Linux端为客户端的代码与阿里云的代码sockte运行后,双方可以实现相互的消息的接收和发送如下:

客户端:

服务端

本代码基本可以实现阿里云与unbuntu的socket通信,但还有不足,代码还在完善中

 

 

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/22426.html

    分享给朋友:

    “云服务器配置 UDP通讯 云服务器通信” 的相关文章

    搬瓦工CN2机房区别:选择更高品质的云服务体验

    在当今数字化时代,选择一家优质的云服务提供商和适合的机房对于网站运行和用户体验至关重要。搬瓦工作为一家备受信赖的VPS提供商,其CN2机房因其卓越的网络性能和稳定性而备受关注。本文将详细为您解析搬瓦工CN2机房与其他机房的区别,助您做出明智的选择。一、网络质量:CN2机房的优势所在CN2是中国电信旗...

    越南VPS服务全解析:如何选择性价比最高的虚拟服务器

    越南VPS市场近年来发展迅速,吸引了越来越多的用户和投资者。越南的地理位置和互联网基础设施的不断完善,使其成为东南亚地区VPS服务的重要节点。无论是本地企业还是国际用户,越南VPS都提供了多样化的选择。 越南VPS的市场现状 越南VPS市场正处于快速扩展阶段。随着越南互联网普及率的提升和数字化转型的...

    如何高效管理Ubuntu服务器:从基础到高级的全面指南

    管理Ubuntu服务器是一个需要掌握多种技能的任务。从选择合适的Linux发行版到系统初始化,再到账号和权限管理,每一个环节都至关重要。以下是一些基础的管理技巧,帮助你更好地配置和管理Ubuntu服务器。 1.1 选择合适的Linux发行版 在国内,常用的Linux发行版有CentOS、Ubuntu...

    RackNerd 密码管理与安全指南:保护您的账户安全

    RackNerd 密码管理与安全 在探讨RackNerd的密码管理与安全之前,了解这个主机商的背景有助于我们更好地理解其服务的重要性。RackNerd成立于美国,专注于提供多种主机服务,包括虚拟主机、KVM VPS、Hybrid Dedicated Servers和独立服务器租用等。这些服务非常适合...

    全面了解扩容:定义、分类及最佳实践

    扩容的定义与重要性 扩容这个词听起来似乎很简单,但它其实蕴含了很多技术细节和实际应用。简单来说,扩容就是对已有系统或设备的能力进行增强,尤其是在存储或处理能力上。想象一下,当你的业务正在快速增长,客户数量激增,原本的系统可能会面临压力,这时扩容就显得尤为重要。通过扩容,我可以在需要的时候增加更多的存...

    探索诸暨市:地理特征、气候与经济发展全面分析

    我发现诸暨市,这个位于浙江省中北部的县级市,真是一个令人着迷的地方。它东靠嵊州市,南面与东阳、义乌和浦江相邻,西面与桐庐和富阳相接,北边则与柯桥和萧山为界。这样的地理位置赋予了诸暨市独特的区域特色,方便了与周边城市的交流与发展。 在谈到诸暨的地理特征时,不得不提其独特的地形地貌。诸暨市位于浙东南和浙...