连接云服务器的C语言实践
随着云计算技术的不断发展,越来越多的企业选择将自己的业务部署在云服务器上。同时,云计算技术也为程序员们带来了更多的挑战和机遇。如何利用C语言连接云服务器,已经成为了程序员们共同面对的问题。在本篇文章中,我将和大家分享如何通过C语言连接云服务器,并实现简单的数据传输。
一、连接云服务器
1. 创建云服务器
在实践中,我们可以通过阿里云等云计算服务提供商来创建一个云服务器。通过购买一定规格的云服务器,我们可以获得一定量的CPU、内存和硬盘空间。同时,我们可以向云服务器中安装操作系统和一些应用程序,使得我们可以通过远程桌面等方式访问到云服务器。
2. 获取云服务器IP地址
云服务器创建成功之后,我们需要获取其IP地址。通过远程连接凭证,我们可以访问到云服务器操作系统的命令行界面,并通过命令ipconfig或者ifconfig等命令获取到当前的IP地址。
3. 开放云服务器端口
在连接云服务器之前,我们需要先开放云服务器的端口。默认情况下,云服务器是关闭所有端口的。我们需要在云服务器的安全组设置中,开放我们需要连接的端口。在本篇文章中,我们需要开放云服务器22端口和80端口。
二、C语言连接云服务器
在实践中,我们可以通过C语言的socket编程技术连接到云服务器,并实现数据传输。下面我们将介绍如何通过C语言连接到云服务器。
1. 构建C语言连接云服务器程序
在C语言中,我们可以通过socket函数创建一个socket连接对象,并设置连接属性。具体实现可以参考下面代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
int mn(int argc, char *argv[])
{
int sockfd;
char buffer[1024];
struct sockaddr_in server_addr;
struct hostent *host;
int portnumber,nbytes;
if(argc!=3)
{
fprintf(stderr,”Usage:%s hostname portnumber\a\n”,argv[0]);
exit(1);
}
if((host=gethostbyname(argv[1]))==NULL)
{
fprintf(stderr,”Gethostname error\n”);
exit(1);
}
if((portnumber=atoi(argv[2]))
{
fprintf(stderr,”Usage:%s hostname portnumber\a\n”,argv[0]);
exit(1);
}
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
fprintf(stderr,”Socket Error:%s\a\n”,strerror(errno));
exit(1);
}
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(portnumber);
server_addr.sin_addr=*((struct in_addr *)host->h_addr);
if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
{
fprintf(stderr,”Connect Error:%s\a\n”,strerror(errno));
exit(1);
}
while(1)
{
bzero(buffer,1024);
fgets(buffer,1024,stdin);
send(sockfd,buffer,strlen(buffer),0);
if((nbytes=recv(sockfd,buffer,1024,0))== -1)
{
fprintf(stderr,”Receive Error:%s\a\n”,strerror(errno));
exit(1);
}
buffer[nbytes]=’\0′;
printf(“Server(%s:%d):%s\n”,inet_ntoa(server_addr.sin_addr),ntohs(server_addr.sin_port),buffer);
if(strncmp(buffer,”exit”,4)==0)
break;
}
close(sockfd);
exit(0);
}
本程序的功能是连接到云服务器指定的IP地址和端口号,并读取从云服务器返回的数据。通过fgets函数读取终端输入的数据,并将其发送到云服务器。云服务器收到数据之后,返回给客户端,并输出到终端上。
2. 编译程序并运行
在Linux系统下,我们可以使用gcc编译器来编译程序,并生成可执行文件。命令如下:
gcc client.c -o client
编译成功后,我们可以直接运行可执行文件:
./client 127.0.0.1 8080
其中,127.0.0.1是云服务器的IP地址,而8080是我们需要连接的端口号。
三、
相关问题拓展阅读:
- 个人网站搭建(云服务器+域名注册)
- 在云服务器上搭建了mqtt,为什么手机连接不上mqtt,要怎么做才能连接上?求求大神帮忙
个人网站搭建(云服务器+域名注册)
账号中心
工作台
等待“个人实名认证”——大概2小时
云服务器、存储桶等业务会自动续费吗?
在“续费管理”业务中查看
搭建网站总览
打包源文件需要包括node_modules吗?
应该不会,因为打包好的build文件不大
云服务器指南
菜鸟教程-云服务器
云服务器试用
校园云服务器
轻量应用服务器
域名注册
等待“注册局实名审核”——等了大概20分钟
域名解析就相当于将邮政编码和具体市名搭信瞎之间进行转换的一个行为。
cmd——ipconfig
192.168 ip地址是唯一的吗?
局域网内是的
IPv4
IPv4,英文Internet Protocol Version 4,互联网通信协议第四版本
IPv4地址使用的是32位的二进制数字,为了记忆方便,通常也被转化为4个10进制的数字,也就是我们常见的类似202.96.64.68的格式。
IPv6:不受美国控制
ping自己的域名
在弹出的命令操作界面中输入(”ping“+“空格”+“需要ping的域名或者IP”)
如果能ping到,说明解析成功
C:\Users\ThinkPad>ping linjoe.xyz
正在 Ping linjoe.xyz 具有 32 字节的数据:
来自 192.168.1.102 的回复: 字节=32 时间
解析域名到本地ip还是云服务器ip?
云服务器有2个IP地址,分别是公网IP和私网IP,发布网站使用的是公网IP地址,将域名解析到云服务器的公网IP地址。
DNS解析常见问题:如何添加A记录?
域名怎么和公网ip关联?
在域名解析管理面板上,添加坦孙解析记录,将域名解析到公网ip,然后在主机面板上去绑定这个域名就行,绑定前使用国内主机的还需要先备案。
域名备案
如果网站没有域名直接用IP访问,那是否还要备案?
bucket
指定用户
广州(中国)(ap-guangzhou)
19:56:01
将 React 项目发布至腾讯云 COS
COS—Cloud Object Storage 云储存新手入门
公网和内网的差别
广域网(WAN),就是我们通常所说的知空Internet,它是一个遍及全世界的网络。
在云服务器上搭建了mqtt,为什么手机连接不上mqtt,要怎么做才能连接上?求求大神帮忙
MQTT协议
是广泛应用的物联局盯网协议,使用测试MQTT协议需要MQTT的代理。有两种方法使用MQTT服务,一是租用现成的MQTT服务器,如
阿里云
,百度云,
华为云
等公用的云平台提供的MQTT服务,使用公用的MQTT服务器的好处是省事,但如果仅仅用于测试学习还需要注册帐号,灵活性差些,有的桐尺和平台还困誉需要付费。另一方法是自己使用开源的MQTT组件来搭建。
MQTT服务器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
这里介绍的是用轻量级的mosquitto开源项目来搭建一个属于自己的MQTT服务器。
之一步:需要安装一台linux主机,这不多介绍,可以使用真机安装也可以使用
虚拟机
安装。如果仅仅是自己测试使用都可以。
第二步:下载mosquitto需要的依赖
sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake
第三步:下载mosquitto并解压,现在mosquitto官网最新的版本是1.5.1
tar xzvf mosquitto-1.5.1.
tar.gz
第四步:编译
cd mosquitto-1.5.1/
make
make install
第五步:启动mosquitto
./mosquitto -v
: mosquitto version 1.5.1 starting
: Using default config.
: Opening ipv4 listen socket on port 1883.
: Opening ipv6 listen socket on port 1883.
这时候mosquitto就会以默认的参数启动。如果需要带
配置文件
可以修改配置文件mosquitto.conf,
启动时候加上参数 -c,
./mosquitto -c mosquitto.conf
可以看到,mosquitto监听的端口为1883.
这时候我们的MQTT服务器就搭建好了。可找一个mqtt客户端来测试一下。
先发布一个主题“home/garden/fountain/2”
内容是“
hello world
”
这时候在mosquitto会打印出下面的log
: New connection from 192.168.1.105 on port 1883.
: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).
: No will message specified.
: Sending CONNACK to MQTT_FX_Client (0, 0)
: Received PINGREQ from MQTT_FX_Client
: Sending PINGRESP to MQTT_FX_Client
: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, ‘home/garden/fountain/2’, … (12 bytes))
: Received PINGREQ from MQTT_FX_Client
: Sending PINGRESP to MQTT_FX_Client
订阅主题“home/garden/fountain/2”
可以看到收到了自己发布的消息。
用wireshark抓包
可以看到抓到了一个MQTT的publish的报文。
云服务枣梁御器
内的防火墙设置了吗?mqtt的通讯端口是什么?云服务提供商的安全组设置了吗?如果都设置了,服务启动了吗?端口正常监听吗?
按如下格式提供你的信息:
系统版本:
# 命令uname -a
服务状态:
# 命令systemctl status 服务名
端口监听状态:
# 命令netstat -antupl
防火墙放行端口:
# 命令firewall-cmd –list-port
云服务商安全组设置
不然没法帮你凳岩判渣兆断问题出现的位置以及如何解决该问题
MQTT协议是广泛应用的物联网协议,使用测试MQTT协议需要MQTT的代理。有两种方法使用MQTT服务,一是租用现成的MQTT服务器,如阿里云,百度云,华为云等公用的云平台提供的MQTT服务,使用公用的MQTT服务器的好处是省事,但如果仅仅用于测试学习还需要注册帐号,灵活性差些,有的平台还需要付费。另一方法是自己使用开源的MQTT组件来搭建。
MQTT服务器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
这里介绍的是用轻量级的mosquitto开源项目来搭建一个属于自己的MQTT服务器。
之一步:需要安装一台linux主机,这不多介绍,可以使用真机安装也可以使用虚拟机安装。如果仅仅是自己测试使用都可以。
第二步:下载mosquitto需要的依赖
sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake
第三步:下载mosquitto并解压,现在mosquitto官网最新的版本是1.5.1
tar xzvf mosquitto-1.5.1.tar.gz
第四步:编译
cd mosquitto-1.5.1/
make
make install
第手野五步:启动mosquitto
./mosquitto -v
: mosquitto version 1.5.1 starting
: Using default config.
: Opening ipv4 listen socket on port 1883.
: Opening ipv6 listen socket on port 1883.
这时候mosquitto就会以默认的参数启动。如果需要带配置文件可以修改配置文件mosquitto.conf,
启动时候加上参数 -c,
./mosquitto -c mosquitto.conf
可以看到,mosquitto监听的端口为1883.
这时候我们的MQTT服务器就搭建好了。可找一个mqtt客户端来测试一下。
先发布一个主题“雀罩home/garden/fountain/2”
内容是“hello world”
这时候在mosquitto会打印出下面的log
: New connection from 192.168.1.105 on port 1883.
: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).
: No will message specified.
: Sending CONNACK to MQTT_FX_Client (0, 0)
: Received PINGREQ from MQTT_FX_Client
: Sending PINGRESP to MQTT_FX_Client
: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, ‘home/garden/fountain/2’, … (12 bytes))
: Received PINGREQ from MQTT_FX_Client
: Sending PINGRESP to MQTT_FX_Client
订阅主题“home/garden/fountain/2”
可以看到收到了自己发布的消息。
用wireshark抓包
可以看到抓到了一毕岁喊个MQTT的publish的报文。
在c 中连接云服务器的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于在c 中连接云服务器,连接云服务器的c语言实践,个人网站搭建(云服务器+域名注册),在云服务器上搭建了mqtt,为什么手机连接不上mqtt,要怎么做才能连接上?求求大神帮忙的信息别忘了在本站进行查找喔。