文章目录

  • 不同局域网之间socket通信
  • 前言
  • 一、所需的硬件及软件
  • 二、步骤
    • 1.配置阿里云服务器安全组
    • 2.在阿里云服务器下载frp,配置frps端
    • 3.在设备2下下载frp,配置frpc端
      • 如果你的设备2是Windows系统
    • 4.运行程序
  • 三.总结

不同局域网之间socket通信

前言

两台设备在同网段的局域网里,socket 客户端和socket服务端是可以相互通信的。但两台设备分别处于不同网段的局域网中时,之间就不能通信了。为了解决这个问题,需要一台有公网IP的服务器作为中转,就可以实现不同局域网之间两台设备基于socket通信了。
简单的框架就是这样的:

设备1将消息或者控制设备2的指令先发送到云服务器,再由云服务器转发给设备2。设备2如果需要反馈消息,同理,先发送到云服务器,再由云服务器转发给设备1。
在我的项目中,设备1是windows系统的笔记本,设备2是linux系统的树莓派。如果你的两台设备都是Windows系统,或者两台设备都是Linux系统,也没有问题。

一、所需的硬件及软件

1.编写好的可以在同网段局域网下通信的socket client端和socket server端程序。
2.一台有公网IP的云服务器,要记住你的公网IP。我使用的是阿里云的服务器Linux Ubuntu 16.04 64位。如果是学生的话会有优惠。
3.frp软件包。用来搭建内网穿透服务器。
4.你所需要进行通信的两台设备

二、步骤

1.配置阿里云服务器安全组


找到配置规则以后,点击配置规则。

点击手动添加,按图中信息进行配置,保存。

2.在阿里云服务器下载frp,配置frps端

阿里云一般是Linux系统,如果你的是Windows系统,可以参考 3.在设备2中下载frp,配置frpc端 的步骤

#找一个你能记得住的位置新建一个文件夹,wyc是文件名,随便取
mkdir wyc
#然后下载frp,下载之前先看注意事项
1. wget https://github.com/fatedier/frp/releases/download/v0.34.1/frp_0.34.1_linux_amd64.tar.gz  #注意事项:提前查清楚你所购买的阿里云服务器是什么系统,什么架构的,#几位的操作系统。查清楚以后再下载相应的frp版本。#以我的为例,我的是Linux Ubuntu16.04 64位的操作系统。#所以要选frp_0.34.1_linux_amd64.tar.gz。具体选什么可以参考下图

# 解压
tar xzvf frp_0.34.1_linux_amd64.tar.gz
# 解压完以后会有名为frp_0.34.1_linux_amd64的文件夹,由于经常用到这个文件夹,给它重命名为一个简单的名字frp,方便使用
mv frp_0.34.1_linux_amd64 frp
cd frp
#查看frps.ini配置文件
cat frps.ini


可以看到绑定的端口,默认是7000,如果想改的话可以自己改。

#修改端口
vim frps.ini

运行frps,监听7000端口是否有frp客户端连接

#运行frps
./frps -c ./frps.ini

如果看到frps tcp listen on 0.0.0.0:7000;Start frps success代表开启成功。

3.在设备2下下载frp,配置frpc端

设备2一般是指运行socket server端程序的那台设备。设备2是socket通信方的server端,是frp通道的client端,这个要搞清楚。
先介绍linux系统,linux系统下frpc端和frps端的配置类似。

#找位置创建文件夹
mkdir wyc
#下载frp,找对应版本。
#一定要注意!!!!在设备2中下载的frp和在云服务器中下载的frp版本要一样。系统可以不一样,但版本要一样。
#比如我云服务器下的是Linux amd64架构的,在树莓派下的是arm 32架构的。只要版本一样就行,都是0.34.1
wget https://github.com/fatedier/frp/releases/download/v0.34.1/frp_0.34.1_linux_arm.tar.gz
# 解压
tar xzvf frp_0.34.1_linux_arm.tar.gz
mv frp_0.34.1_linux_arm frp
cd frp
cat frpc.ini

可以看到frpc.ini中的内容为:
进行相应的配置

#启动frpc服务
./frpc -c ./frpc.ini

启动成功之后,在云服务器和设备2的命令窗口上都会看到提示。[ssh] success等字样。

如果你的设备2是Windows系统

frp下载地址:frp下载地址
下载之后解压,找到frpc.ini文件用记事本打开,进行配置。配置过程参考上面的内容。
启动frp服务是通过运行.exe文件进行的。
如果你的云服务器也是Windows系统的,进行类似的操作就可以了。

4.运行程序

至此,设备2和云服务器之间的通道已经打通。只需要先在设备2中运行socket server端程序,再在设备1中运行socket client端程序就可以跨局域网通信了。

三.总结

设备1和设备2不要搞混。
如果有什么问题可以给我留言。

不同局域网之间socket通信相关推荐

  1. Android模拟器的ip获取以及模拟器之间socket通信

    作者:李波 实现网络五子棋时用到了两个设备间的Socket通信,如果使用真机调试比较麻烦,用两个模拟器之间进行通信会比较方便. 首先要获得的模拟器的IP地址 在本机上启动两个模拟器,emulator- ...

  2. Android基于局域网的socket通信

    最近写了一个关于局域网socket通信的demo,代码和ui都很low,但是功能实现了,所以贴出来记录一下 主要流程如下 服务端:启动服务-->显示ip-->等待接收-->显示消息- ...

  3. java与C语言之间socket通信(java客户端 C服务端)

    直接贴代码 服务端C代码 server.c #include <stdio.h> #include <sys/types.h> #include <sys/socket. ...

  4. java模拟器ip_Android模拟器的ip获取以及模拟器之间socket通信

    作者:李波 实现网络五子棋时用到了两个设备间的Socket通信,如果使用真机调试比较麻烦,用两个模拟器之间进行通信会比较方便. 首先要获得的模拟器的IP地址 在本机上启动两个模拟器,emulator- ...

  5. 【过程记录 】windows和ubuntu两台电脑局域网进行socket通信收发数据和传输文件

    实验图片和前期准备: ubuntu作为服务端,windows客户端传输数据和文件: windows作为服务端,ubuntu作为客户端: 实验图片和前期准备: 服务端发送和接受i: 客户端接收服务端的时 ...

  6. Python实现局域网(Socket)通信

    这学期课很多,加上学校就业办这边事情也不少,所以零散时间琢磨了很多天,开始想用进程的并发实现一个收,一个发,但ide无法实现同时print和input,所以暂时只实现了一个类似对讲机一样的程序,就是A ...

  7. python文件之间如何互相通信_python学习1-网络编程之udp_创建socket实现两电脑之间的通信...

    一.网络(UDP) 1,网络通信: a,局域网(同一个网络)通信 b,互联网(万维网)通信 网络编程:让在不同电脑上面的软件能够进行数据传递,即进行通信. 2,端口号 端口号范围0-65535,120 ...

  8. java nio socket长连接_netty学习实战—实现websocket长连接和socket之间进程通信

    netty学习-实现websocket长连接和socket之间通信 最近正在学习netty,跟着教程写了一个基于WebSocket的网页聊天室,对netty有了一定的了解,现在正好项目使用到长连接,选 ...

  9. java与c 通信_Java与C之间的socket通信

    最近正在开发一个基于指纹的音乐检索应用,算法部分已经完成,所以尝试做一个Android App.Android与服务器通信通常采用HTTP通信方式和Socket通信方式.由于对web服务器编程了解较少 ...

最新文章

  1. Product生命周期
  2. mac 下 通过 brew 安装 MariaDB
  3. JS——样式类的添加
  4. C++ string的使用
  5. Android O 迁移应用官方指南
  6. postgresql数据类型转换
  7. eclipse 插件扩展新建java页面_java-Eclipse插件:创建动态菜单和相应的处理...
  8. Lesson 02amp;03 for Plotting in R for Biologists
  9. Red hat linux ping: unknown host www.baidu.com
  10. android开发,assets下面的资源文件不会变化/改动
  11. Windows7中安装内存与可用内存不一致的解决办法
  12. 【JavaScript 6连载】三、构造函数
  13. matlab做高斯滤波,matlab高斯滤波自定义函数怎么做
  14. mysql手册01_常用SQL语句大全
  15. 计算机管理中看不到iis,Win10系统找不到internet信息服务(IIS)管理器怎么办
  16. 刚刚,5G商用牌照正式发布,一共四张
  17. uva 12307 - Smallest Enclosing Rectangle(旋转卡壳)
  18. 七夕,思念里的流浪狗在哭---众智云
  19. 无线技术—安全认证技术
  20. 软件开发中常见名词解释

热门文章

  1. Hyperledger/FireFly
  2. .netCore微信转账至零钱——V3
  3. 7-37 模拟EXCEL排序 (25 分)
  4. java导出word加水印(已实现)
  5. android vivo oppo 真机调试 apk、安装失败,系统老是报“解析包时出现问题”
  6. ShaderWeaver使用教程-动画序列帧
  7. 请将磁盘插入‘‘U盘(F:)‘‘的解决方法
  8. dell服务器T420装系统,ThinkPad T420笔记本一键u盘装系统win7教程
  9. 为什么这么多学生讨厌数学(以及如何解决它)?
  10. appcrash事件怎么解决?三种方法教你