我有一个通过端口5000运行的Flask服务器,它很好.我可以访问http://example.com:5000
但是可以在http://example.com上简单地访问它吗?我假设这意味着我必须将端口从5000更改为80.但是当我在Flask上尝试时,我在运行它时收到此错误消息.
Traceback (most recent call last):
File "xxxxxx.py", line 31, in <module>
app.run(host="0.0.0.0", port=int("80"), debug=True)
File "/usr/local/lib/python2.6/dist-packages/flask/app.py", line 772, in run
run_simple(host, port, self, **options)
File "/usr/local/lib/python2.6/dist-packages/werkzeug/serving.py", line 706, in run_simple
test_socket.bind((hostname, port))
File "<string>", line 1, in bind
socket.error: [Errno 98] Address already in use
Run Code Online (Sandbox Code Playgroud)
运行lsof -i :80回报
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 467 root 3u IPv4 92108840 0t0 TCP *:www (LISTEN)
apache2 4413 www-data 3u IPv4 92108840 …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现TCP连接,从服务器端一切正常,但是当我运行客户端程序(从客户端计算机)时,我收到以下错误:
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at TCPClient.main(TCPClient.java:13)
Run Code Online (Sandbox Code Playgroud)
我尝试更改套接字号以防它正在使用但无济于事,是否有人知道是什么导致此错误以及如何解决它.
服务器代码:
//TCPServer.java
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception {
String fromclient;
String toclient;
ServerSocket Server = new ServerSocket(5000);
System.out.println("TCPServer Waiting for client on port 5000");
while (true) {
Socket connected = Server.accept();
System.out.println(" THE CLIENT" + " " + connected.getInetAddress()
+ ":" + connected.getPort() + " …Run Code Online (Sandbox Code Playgroud) 在Eclipse中,我收到此错误:
run:
[java] Error creating the server socket.
[java] Oct 04, 2012 5:31:38 PM cascadas.ace.AceFactory bootstrap
[java] SEVERE: Failed to create world : java.net.BindException: Address already in use: JVM_Bind
[java] Java Result: -1
BUILD SUCCESSFUL
Total time: 10 seconds
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它现在出现了,但几个小时前它运行良好.我需要重启机器吗?我如何深究它?我感谢任何提示或建议.
验证用户输入的IP有效的最佳方法是什么?它以字符串形式出现.
我正处于编写新的Windows服务应用程序的设计阶段,该应用程序接受长连接的TCP/IP连接(即,这不像HTTP,其中有许多短连接,而是客户端连接并保持连接数小时或数天或甚至几周).
我正在寻找设计网络架构的最佳方法的想法.我将需要为该服务启动至少一个线程.我正在考虑使用Asynch API(BeginRecieve等),因为我不知道在任何给定时间(可能是数百个)我将连接多少客户端.我绝对不想为每个连接启动一个线程.
数据将主要从我的服务器流向客户端,但有时会从客户端发送一些命令.这主要是一个监控应用程序,我的服务器定期向客户端发送状态数据.
有关尽可能扩展的最佳方法的任何建议吗?基本工作流程 谢谢.
编辑:要明确,我正在寻找基于.net的解决方案(如果可能,C#,但任何.net语言都可以)
BOUNTY注意:要获得赏金,我希望不仅仅是一个简单的答案.我需要一个解决方案的工作示例,作为指向我可以下载的内容的指针或在线的简短示例.它必须是基于.net和Windows(任何.net语言都可以接受)
编辑:我要感谢所有给出好答案的人.不幸的是,我只能接受一个,我选择接受更为人熟知的Begin/End方法.Esac的解决方案可能会更好,但它仍然足够新,我不确定它将如何运作.
我已经提出了我认为很好的所有答案,我希望我能为你们做更多的事情.再次感谢.
我用最少的配置安装了CentOS 7(os + dev工具).我正在尝试打开80端口进行httpd服务,但是我的iptables服务有问题......它出了什么问题?我究竟做错了什么?
# ifconfig/sbin/service iptables save
bash: ifconfig/sbin/service: No such file or directory
# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
# sudo service iptables status
Redirecting to /bin/systemctl status iptables.service
iptables.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, …Run Code Online (Sandbox Code Playgroud) 有人知道如何通过Windows命令行关闭单个连接的TCP或UDP套接字?
谷歌搜索这个,我看到有些人问同样的事情.但答案看起来像netstat或netsh命令的手册页,侧重于如何监控端口.我不想要如何监控它们的答案(我已经这样做了).我想关闭/杀死他们.
编辑,澄清:假设我的服务器侦听TCP端口80.客户端建立连接并为其分配端口56789.然后,我发现这种连接是不受欢迎的(例如,这个用户正在做坏事,我们要求他们停止但是连接不会在途中被丢弃).通常情况下,我会添加防火墙来完成这项工作,但这需要一些时间,而且我处于紧急状态.杀死拥有连接的进程在这里确实是一个坏主意,因为这会占用服务器(当我们只想选择性地暂时删除这一个连接时,所有用户都将失去功能).
是否可以让主机打开Docker容器访问端口?具体来说,我在主机上运行MongoDB和RabbitMQ,我想在Docker容器中运行一个进程来监听队列并(可选)写入数据库.
我知道我可以将一个端口从容器转发到主机(通过-p选项)并从Docker容器中连接到外部世界(即Internet),但我不希望暴露RabbitMQ和MongoDB端口从东道主到外部世界.
编辑:一些澄清:
Starting Nmap 5.21 ( http://nmap.org ) at 2013-07-22 22:39 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00027s latency).
PORT STATE SERVICE
6311/tcp open unknown
joelkuiper@vps20528 ~ % docker run -i -t base /bin/bash
root@f043b4b235a7:/# apt-get install nmap
root@f043b4b235a7:/# nmap 172.16.42.1 -p 6311 # IP found via docker inspect -> gateway
Starting Nmap 6.00 ( http://nmap.org ) at 2013-07-22 20:43 UTC
Nmap scan report for 172.16.42.1
Host is up (0.000060s latency).
PORT STATE SERVICE
6311/tcp …Run Code Online (Sandbox Code Playgroud) 在Linux环境中,我需要检测RJ45连接器到其插槽的物理连接或断开状态.最好只使用BASH脚本.
以下在其他网站上提出的解决方案不适用于此目的:
是不是有一些状态可以在/ proc文件系统中使用(其他一切都在那里)?
Linux世界是如何拥有自己的Windows泡泡版本,从图标托盘中弹出,表明您刚刚拔掉了网线?
Kent Fredric和lothar,你的两个答案都满足了我的需求......非常感谢!哪一个我会用...我还是不知道.
我想我不能把你们两个都当作正确的答案吗?对我来说,我选择一个可能是公平的.我猜是翻硬币吗?再次,谢谢!
networking ×10
linux ×3
ip-address ×2
java ×2
port ×2
python ×2
tcp ×2
.net ×1
c# ×1
centos ×1
connection ×1
detection ×1
docker ×1
eclipse ×1
flask ×1
iptables ×1
scalability ×1
serversocket ×1
ssh ×1
systemd ×1
validation ×1