我通过LAN上的TCP套接字成功发送/接收数据,但我希望通过互联网实现相同的目标。我问了一些朋友并且想到了使用静态IP的想法。我想知道如何使用静态IP?我的意思是我需要在主机上配置端口设置还是什么?
下面是我想用来给你一个想法的示例代码:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class MainClass
{
public static void Main()
{
IPEndPoint ip = new IPEndPoint(IPAddress.Any,9999);
Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
socket.Bind(ip);
socket.Listen(10);
Console.WriteLine("Waiting for a client...");
Socket client = socket.Accept();
IPEndPoint clientep =(IPEndPoint)client.RemoteEndPoint;
Console.WriteLine("Connected with {0} at port {1}",clientep.Address, clientep.Port);
string welcome = "Welcome";
byte[] data = new byte[1024];
data = Encoding.ASCII.GetBytes(welcome);
client.Send(data, data.Length,SocketFlags.None);
Console.WriteLine("Disconnected from {0}",clientep.Address);
client.Close();
socket.Close();
}
}
答案 0 :(得分:3)
获得静态IP后,您需要将其添加为网络适配器中的一个IP,请查看Setting a static IP guide以执行相同操作。
然后,您需要确保您的服务器套接字在此IP上列出,因为您使用IPAddress.Any
它将绑定到您系统上的所有可用IP地址。
最后,您需要在客户端代码中明确提供静态IP。可能会将此IP存储在配置文件中,以便在以后更改它。如果您愿意,可以设置自定义域名并将其指向静态IP以使用它而不是IP。
答案 1 :(得分:1)
是的,我们需要配置端口和IP,以便我们可以在两台服务器之间进行通信。我为此完成了VPN配置。请确保您能够从尝试运行此代码的系统连接到该系统。您可以从命令提示符运行ipconfig / netstat命令来测试它。
请先执行此操作,确保两个系统都能够相互通话,然后请尝试运行此代码。在那之后你仍然面临问题,请随时与我联系。