不在同个局域网下,客户端和服务端怎么交互?

刚接触后端,学会了用简单的httpservlet来实现客户端和服务端之间的数据交互。但是只能在局域网进行,这时候如果服务端的开发小伙伴和客户端的不在同一个局域网,这该咋办?
我们项目租了个服务器,我在广东,服务器在江西…网上试遍了解决方法,什么防火墙、外网映射啊没一个派上用场…怀疑人生ing
最后在一个大神朋友的建议下,去找了服务器店家的技术人员,才知道Tomcat的8080端口是不开放给我们的,把Tomcat的端口号改成合法范围的就可以了!
在这里插入图片描述
2020年5月10日下午2点,这个折磨了我一个多星期的问题终于解决了,给大神磕头,给店家的技术人员磕头!

这篇文章还会完善具体步骤的,但现在博主课设的ddl在即,先吐槽一波,后期再补了!

--------------------------------------------分割线-------------------------------------------------------
好啦!我回来嘞!现在具体说说怎么实现叭。
我把服务端的代码移植到远程的服务器,自己的PC端跑客户端。服务端的开发环境是Eclipse,客户端是AndroidStudio,但是为了简化操作,就懒得在AndroidStudio编程了,我直接在PC端的浏览器进行地址访问,原理是一样的。相信成功实现简单的浏览器和远程服务端交互,你也会明白客户端和远程服务端交互怎么实现了。这部分可以参考【一步一个脚印】Tomcat+MySQL为自己的APP打造服务器(2-1)Servlet的使用

首先,你要清楚自己的远程服务器有哪些端口是开放的,只有开放的端口才能被访问。Tomcat默认是用8080端口,但是我租的服务器开放的端口是8753-8759,因此你要修改Tomcat的配置,把默认端口改到允许的范围内。这个百度一下就会有教程,这里不赘述。
改好之后记得在服务端的浏览器测一下,在Tomcat的bin目录下运行终端,启动Tomcat
在这里插入图片描述
进入浏览器,注意是服务器的浏览器,输入localhost:8755(这里的8755改成你修改后的端口),出现类似这样的界面就说明你的端口修改成功啦~
在这里插入图片描述
然后,回到自己的电脑,在自己电脑上打开浏览器,输入服务器的IP+端口号,服务器的IP应该和SSH连接的IP是一致的。假如我租的服务器IP是47.100.224.184的话,我就在自己电脑的浏览器里输入47.100.224.184:8755,回车,如果显示的是下面这样,说明和远程服务器成功连接,并且成功访问到Tomcat。
在这里插入图片描述

先写到这吧,之后客户端实现就容易了,下次有空再回来。


  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 为了在局域网内创建服务端客户端,您可以使用 Python 的 socket 模块。下面是一个简单的例子: 服务端代码: ``` import socket # Create a socket object s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Bind the socket to a specific address and port s.bind(('127.0.0.1', 6000)) # Listen for incoming connections s.listen(1) print('Server is listening...') # Accept an incoming connection conn, addr = s.accept() print('Connection from:', addr) # Send a message to the client conn.sendall(b'Welcome to the server!') # Close the connection conn.close() ``` 客户端代码: ``` import socket # Create a socket object s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Connect to the server s.connect(('127.0.0.1', 6000)) # Receive a message from the server print(s.recv(1024)) # Close the connection s.close() ``` 若需要添加UI界面,可以使用pyqt,tkinter等框架编写,具体可以参考文档。 后台面板使用js,就需要前后端分离,后台使用python提供api,然后前端用js调用. ### 回答2: 用Python编写局域网内的服务端客户端,并拥有UI界面,使用JS编写后台面板是可行的。 要实现这个功能,可以使用Python的socket模块来实现服务端客户端之间的通信。首先需要创建一个服务端程序,通过绑定本地IP地址和指定端口号来监听客户端连接请求。当有客户端连接成功后,服务端可以与客户端进行数据交互服务端需要使用多线程或多进程来实现同时处理多个客户端连接请求,以便同时为多个客户端提供服务。可以使用Python内置的threading或multiprocessing模块来实现多线程或多进程的支持。 在服务端的UI界面方面,可以使用Python的GUI库来实现,例如Tkinter、PyQt等。可以将服务端的界面设计成一个图形化的程序,包括一些按钮、输入框和输出框等,以便与客户端进行交互。 在后台面板方面,可以使用HTML、CSS和JS来设计一个Web页面,通过JavaScript与服务端进行通信。可以使用JavaScript的XMLHttpRequest或WebSocket等技术与服务端进行数据交互,通过AJAX实现实时更新和动态显示。 通过这样的实现,可以在局域网内建立起一个服务端与多个客户端之间的通信系统,并通过UI界面和后台面板来方便地进行交互和管理。 ### 回答3: 用Python编写一个局域网内的服务端客户端是可行的,可以使用Python内置的socket库来实现网络通信功能。 首先,我们可以创建一个服务端程序,代码如下: ```python import socket # 创建socket对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置IP地址和端口号 host = '0.0.0.0' port = 12345 # 绑定IP地址和端口号 server_socket.bind((host, port)) # 监听请求 server_socket.listen(1) # 等待客户端连接 client_socket, client_address = server_socket.accept() # 接收客户端发送的数据 data = client_socket.recv(1024).decode() print('收到客户端消息:', data) # 发送响应给客户端 response = 'Hello, client!' client_socket.send(response.encode()) # 关闭连接 client_socket.close() server_socket.close() ``` 运行以上代码,服务端将监听在IP地址为'0.0.0.0',端口号为12345的地址上,并等待客户端连接。一旦有客户端连接上来,服务端会接收客户端发送的数据,并发送响应给客户端。 接下来,我们可以创建一个客户端程序,代码如下: ```python import socket # 创建socket对象 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置IP地址和端口号 host = '服务端IP地址' port = 12345 # 连接服务端 client_socket.connect((host, port)) # 发送数据给服务端 data = 'Hello, server!' client_socket.send(data.encode()) # 接收服务端响应的数据 response = client_socket.recv(1024).decode() print('收到服务端消息:', response) # 关闭连接 client_socket.close() ``` 在客户端代码,将"服务端IP地址"修改为实际的服务端IP地址。运行以上代码,客户端连接服务端,并发送数据给服务端,然后接收服务端响应的数据。 要实现具有UI界面的程序,可以使用Python的GUI库Tkinter来创建图形界面。而要使用JavaScript编写后台面板,可以使用Python的web框架如Django或Flask来搭建一个简单的web服务器,然后使用JavaScript与服务端进行通信。 最后,使用Tkinter创建的图形界面和使用JavaScript编写的后台面板可以在同一个Python程序共存,同时运行。这样,你就可以拥有一个局域网内的带有UI界面,并且可以通过后台面板进行控制的服务端客户端了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值