Socket为什么外网无法连接?内网可以
- C# code
using System;using System.Collections;using System.Collections.Generic;using System.Text;using System.Net;using System.Net.Sockets;using System.IO;using System.Threading;using System.Text.RegularExpressions;namespace WebServer{ class HttpProcess { Socket s; public HttpProcess(Socket s) { this.s = s; } public void process() { string head = ""; int len = 0; byte[] buf = new byte[1]; do { len = s.Receive(buf); head += Encoding.ASCII.GetString(buf); } while (len > 0 && !head.EndsWith("\r\n\r\n")); Console.WriteLine(head); string content = "ok"; string raw = string.Format(@"HTTP/1.1 200 OKContent-Length: {0}Content-Type: text/html{1}", Encoding.Default.GetByteCount(content), content); Console.WriteLine(raw); s.Send(Encoding.Default.GetBytes(raw)); s.Shutdown(SocketShutdown.Both); s.Close(); } } public class HttpServer { static void listen() { Socket listener = new Socket(0, SocketType.Stream, ProtocolType.Tcp); IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 81); listener.Bind(endpoint); listener.Blocking = true; listener.Listen(-1); while (true) { Socket s = listener.Accept(); HttpProcess p = new HttpProcess(s); Thread thread = new Thread(new ThreadStart(p.process)); thread.Start(); } } public static int Main(String[] args) { Thread thread = new Thread(new ThreadStart(listen)); thread.Start(); return 0; } }}在我本机,127.0.0.1:81和192.168.1.100:81都可以访问,但是如果放到服务器上,用222.11.22.33:81就无法访问?
请高手指教
[解决办法]
可以ping到服务器吗,可以ping到的话换个1024以后的端口试试。
[解决办法]
可能是端口问题,再找一个空闲的端口试试
[解决办法]
查看下服务器防火墙的设置
[解决办法]
[解决办法]
把IPAddress.Any改成192.168.1.100测试一下...再仔细查一下路由器配置...
[解决办法]
本机测没用的...网络环境很复杂,还是先仔细查一下路由器防火墙等等配置吧...
[解决办法]
应该是服务器的防火墙挡住了
[解决办法]
我试了一下,不能连接你222.11.22.33:81这个程序。socket连接不成功。80端口也不成功。
你是不是启用了DMZ主机?
[解决办法]
你可以试着把你的iis监听81端口,试试外网能访问web不。如果OK的话,至少说明用81端口提供web服务时可以的。另外,你看看是不是你的防火墙的过滤规则问题,或者acl设置的问题。
[解决办法]
另外,如果你是直接在路由器上做的端口转发,是允许了tcp还是UDP?另外,是电信的网络,商务领航?有的路由器在端口转发方面有bug?或者你可以根据你的路由器型号,到官网或者公网上查询有无最新程序升级。有无网友遇到过相同问题。