2011-10-10 33 views
2

我在使用TCP套接字通过局域网发送/接收数据方面取得了成功,但我想通过互联网完成同样的操作。我问了一些我的朋友,并有了使用静态IP的想法。我想知道如何使用该静态IP?我的意思是我需要在主机上配置端口设置还是什么?使用互联网上的TCP套接字发送/接收字节(可能使用静态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

你为什么使用[asp.net]和[vb.net]标签? – 2011-10-10 07:15:26

回答

3

一旦你有你需要在你的网络适配器添加为的IP的一个静态IP,退房Setting a static IP guide也是这样做的。

然后,您需要确保您的服务器套接字在此IP上列出,因为您使用IPAddress.Any它将绑定到系统上所有可用的IP地址。

最后,您需要在客户端代码中明确提供静态IP。可能将此IP存储在配置文件中,以便在稍后阶段进行更改。如果您愿意,您可以设置自定义域名并将其指向静态IP以使用它而不是IP。

+0

基本上,我想通过使用TCP套接字在互联网上完成发送/接收字节,所以我一直在寻找静态IP如何在这里使用的信息,以及我需要做什么来设置端口(如果有的话)。我们所做的只是为LAN指定IP;在TCP套接字中使用静态IP的设置是什么? –

+0

嗨,正如我从“服务器”代码的角度解释的那样,您已经很好地期望确保端口9999(基于您提供的示例代码)可以从服务器外部访问。从客户端,创建'IPEndPoint'对象时使用静态IP,然后连接到客户端。 – 2011-10-10 07:52:51

+0

你可以写我发送和接收端口设置和IP设置在TCP套接字编程在C#中做? –

1

是的,我们需要配置端口和IP,以便我们可以在两台服务器之间进行通信。我为此做了一个VPN配置。请确保您能够从您尝试运行此代码的位置连接到该系统。您可以从命令提示符运行ipconfig/netstat命令来测试此操作。

请先执行此操作,并确保两个系统能够互相通话,然后请尝试运行此代码。之后,你仍然面临这个问题,请随时与我联系。

+0

查看这个基本上,我想完成发送/使用TCP套接字通过互联网接收字节,所以我一直在寻找静态IP如何在这里使用的信息,以及我需要做什么来设置端口(如果有的话)。我们所做的只是为LAN指定IP;在TCP套接字中使用静态IP的设置是什么? –

相关问题