C# tcp/ip客户端服务器不在internet上工作

C# tcp/ip客户端服务器不在internet上工作,c#,tcp,C#,Tcp,我打算在TCP/IP模式下设置一个小型客户机/服务器,我使用VS2010,C#来开发我的应用程序,我在谷歌上搜索了很多,可以找到一些源代码,但它们都不能在互联网上工作,我可以在我自己的本地系统中得到一些答案,也就是说,我运行我的服务器,然后监听我自己的本地主机(127.0.0.1),然后发送一些数据(例如使用telnet),它可以正常工作,但当我在internet上执行相同操作时,我什么也得不到!我想使用端口80,因为我想发送/接收http数据,我已经测试了几个源代码,下面是我使用的最后一个代码

我打算在TCP/IP模式下设置一个小型客户机/服务器,我使用VS2010,C#来开发我的应用程序,我在谷歌上搜索了很多,可以找到一些源代码,但它们都不能在互联网上工作,我可以在我自己的本地系统中得到一些答案,也就是说,我运行我的服务器,然后监听我自己的本地主机(127.0.0.1),然后发送一些数据(例如使用telnet),它可以正常工作,但当我在internet上执行相同操作时,我什么也得不到!我想使用端口80,因为我想发送/接收http数据,我已经测试了几个源代码,下面是我使用的最后一个代码(它在本地主机上使用telnet)

//服务器代码:

form_load()
    IPAddress localAddress = IPAddress.Parse("127.0.0.1");
                Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint ipEndpoint = new IPEndPoint(localAddress, 80);

            // Bind the socket to the end point
            listenSocket.Bind(ipEndpoint);

            // Start listening, only allow 1 connection to queue at the same time
            listenSocket.Listen(1);
            listenSocket.BeginAccept(new AsyncCallback(ReceiveCallback), listenSocket);
            Console.WriteLine("Server is waiting on socket {0}", listenSocket.LocalEndPoint);

            // Start being important while the world rotates
            while (true)
            {
                 Console.WriteLine("Busy Waiting....");
                Thread.Sleep(2000);
            }

        public static void ReceiveCallback(IAsyncResult AsyncCall)
    {
         System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
        Byte[] message = encoding.GetBytes("I am a little busy, come back later!");

        Socket listener = (Socket)AsyncCall.AsyncState;
        Socket client = listener.EndAccept(AsyncCall);

        Console.WriteLine("Received Connection from {0}", client.RemoteEndPoint);
        client.Send(message);

        Console.WriteLine("Ending the connection");
        client.Close();
        listener.BeginAccept(new AsyncCallback(ReceiveCallback), listener);
    }
发送数据(客户端),当然我没有用过这个代码,对吗

        public static string SendData()
    {
        TcpClient client = new TcpClient();
        client.Connect(IP, 80);
        StreamWriter sw = new StreamWriter(client.GetStream());
        StreamReader sr = new StreamReader(client.GetStream());

        //if statement evalutes to see if the user has selected to update the server
        //" " = update server
        //"" = do not update the server
        //if (updateData.Equals(""))
        //{
        //    space = "";
        //}
        //else if (!updateData.Equals(""))
        //{
        //    space = " ";
        //}
        //Refrences stream writer, username variable passed in from GUI
        //space variable provides update function: "" = dont update. " " = update database.
        sw.WriteLine("h");
        sw.Flush();
        //data send back from the server assigned to string variable 
        //string recieved = sr.ReadLine();
        return "";

    }
我将在我的服务器(winserver 2008R2)中安装服务器代码,但目前在普通PC上测试它,我做错了什么?我想从随机系统(随机IP)向我的服务器(我知道它的IP)发送一些http数据包,我应该怎么做?是否可以使用tcp/IP或我应该做其他事情? 它与静态IP有关吗?我当然应该有静态IP吗?我的web服务器有静态IP,但我的客户端没有,这是一个问题吗? 我想我在定义端口和IP时遇到了一些问题,我应该如何设置它们?我的服务器有一个特定的IP,但我不知道我的客户端的IP,请你一步一步地给我解释一下好吗?
感谢此场景中最常见的两个问题:

  • 确保服务器的路由器用于将HTTP请求从路由器转发到服务器
  • 确保连接到服务器的,而不是其本地网络地址

  • 谢谢,但我如何知道服务器路由器?我可以使用我自己的PC作为我的测试服务器吗?这样我可以如何测试路由器?你说的服务器公共IP地址是什么意思?我如何找到它?谢谢,但我找不到一个明确的答案,是否有一个很好的教程/示例显示在web上工作的东西?