客户端与服务端的通信问题

问题背景:
腾讯云服务器上安装了unbuntu系统,本机电脑系统则是windwos10
问题:
unbuntu中运行的客户端程序能否与windows10上的服务端程序进行通信?

如果不可以,那是为什么?

如果可以,该如何获取inet_addr函数里面的ip地址?(sin.sin_addr.s_addr = inet_addr(“*...*");)

谢谢!

如果你的windows电脑是在一个内网里的话,他的ip地址在公网上是不可见的。

你的windows电脑需要一个公网ip地址,这样腾讯云上才可以connect到windows端。

如果你windows电脑的公网路由器支持端口映射,那么你可以把公网地址的某个端口映射到你的windows电脑。这样腾讯云连接你映射的公网端口就可以连到windows端了。

另外还有一个方案:nat穿透,一般需要使用udp协议开发,需要中间服务器,实现起来较为复杂,且不一定所有的内网都能穿透成功。

为啥服务端不部署在服务器,客户端放在windows?

其实腾讯云服务器和你的本地电脑都可以认为是服务器。两者需要通信最常用的方式也就是tcp/ip协议。腾讯云服务器是在外网的,所以也需要你的电脑也有公网ip才可以。可以使用花生壳能工具给你的电脑弄个公网IP,然后通过公网IP进行访问

这里有几个问题你需要搞清楚
1、腾讯云服务器和你本机这是属于两个不同的网络环境的,所以在先有条件下是不可以通信的;
2、要想你现在的部署模式不改变解决办法就是可以通过VPN把你本机和腾讯云服务器连接起来,然后就可以实现了。

不能直接通信,但是可以通过其它操作后将公网客户端的请求发送给内网服务端
方式1:将内网服务端的端口进行端口映射(路由器上配置),这样公网客户端可以填写服务端端口映射的IP和Port
方式2:建立内网和公网的一条TCP或UDP隧道,公网客户端通过这条隧道方向连接内网服务端