TcpListener将在您的服务器上运行,等待连接到特定的端口。一个TcpClient将被用于连接到192.168.xxx.xxx:xxxx地址。因此,当您执行Listener.Start时,您正在监听侦听器正在运行的地址和端口上的侦听器连接。本地地址确实意味着您正在监听连接的地址地址。
如果你想连接到远程ip:port,那么你应该尝试TcpClient。一个简单的测试就是看你是否可以连接到一个smtp服务器或类似的东西。
编辑: - 包括一个非常粗略的例子来连接和发送/接收数据到pop.google.com。
static void Main(string[] args)
{
Stream networkStream = null;
string hostName = "pop.gmail.com";
int port = 995;
TcpClient client = new TcpClient();
MemoryStream dataStream = new MemoryStream();
try
{
client.SendTimeout = 15000;
client.ReceiveTimeout = 15000;
client.Connect(hostName, port);
networkStream = new SslStream(client.GetStream(), true);
((SslStream)networkStream).AuthenticateAsClient(hostName);
const int ChunkSize = 256;
int bytesRead = 0;
const int BufferSize = 1024;
byte[] buffer = new byte[BufferSize];
//CONNECT SHOULD GET BANNER
string messageReceived;
using (dataStream = new MemoryStream())
{
do
{
bytesRead = networkStream.Read(buffer, 0, ChunkSize);
dataStream.Write(buffer, 0, bytesRead);
messageReceived = Encoding.UTF8.GetString(dataStream.ToArray());
} while (!messageReceived.EndsWith(Environment.NewLine));
Console.WriteLine("Response:{0}", Encoding.UTF8.GetString(dataStream.ToArray()));
}
buffer = Encoding.UTF8.GetBytes("USER [email protected]\r\n");
networkStream.Write(buffer, 0, buffer.Length);
buffer = new byte[BufferSize];
using (dataStream = new MemoryStream())
{
do
{
bytesRead = networkStream.Read(buffer, 0, ChunkSize);
dataStream.Write(buffer, 0, bytesRead);
messageReceived = Encoding.UTF8.GetString(dataStream.ToArray());
} while (!messageReceived.EndsWith(Environment.NewLine));
Console.WriteLine("Response:{0}", Encoding.UTF8.GetString(dataStream.ToArray()));
}
}
catch (Exception e)
{
Console.Write(e);
}
finally
{
if (networkStream != null)
{
networkStream.Dispose();
networkStream = null;
}
if (client != null)
{
if (client.Connected)
{
client.Client.Disconnect(false);
}
client.Close();
client = null;
}
}
Console.ReadKey();
}
使用TcpClient连接到您的服务器。 – 2009-10-20 03:03:08