【发布时间】:2016-07-11 01:04:03
【问题描述】:
我想构建一个类似 C# 聊天的应用程序,您可以在其中将字符串输入到客户端控制台并在服务器控制台中接收。
我的意思是:用户 B 在他的计算机上执行客户端程序,该计算机位于用户 A 的任何其他位置。客户端程序通过 TCP 连接到服务器程序,该程序在他的计算机上打开了用户 A。当用户 B 在程序中输入一个字符串并按下回车键时,用户 A 应该通过 Internet 接收该字符串。
我有类似的东西:
服务器:
static void Main(string[] args)
{
Console.WriteLine("Start Server ...");
IPAddress b = IPAddress.Any;
TcpListener Server = new TcpListener(b, 5550);
Server.Start();
Console.WriteLine("Server started.");
Console.WriteLine("Wait for Connection...");
TcpClient Client = Server.AcceptTcpClient();
Console.WriteLine("Succeeded");
Stream MessageStream = Client.GetStream();
while (true)
{
byte[] message = new byte[4096];
int bytesRead;
try
{
bytesRead = MessageStream.Read(message, 0, 4096);
ASCIIEncoding encoder = new ASCIIEncoding();
Console.WriteLine(encoder.GetString(message, 0, bytesRead));
}
catch (IOException)
{
break;
}
}
Client.Close();
Server.Stop();
}
客户:
static void Main(string[] args)
{
IPAddress IP = IPAddress.Parse("192.168.2.140");
TcpClient Client = new TcpClient();
Client.Connect(IP, 5550);
Stream MessageStream = Client.GetStream();
Console.WriteLine("Success");
ASCIIEncoding encoder = new ASCIIEncoding();
Console.WriteLine("Enter Text here");
var input = Console.ReadLine();
if(input != null)
{
byte[] buffer = encoder.GetBytes(input);
MessageStream.Write(buffer, 0, buffer.Length);
MessageStream.Flush();
}
Console.ReadLine();
}
当我在我的 PC 上执行客户端并在我的笔记本电脑上执行服务器时,它工作正常,但它如何与我的本地网络之外的计算机一起工作?
当我更换时IPAddress IP = IPAddress.Parse("192.168.2.140");
使用我从 canihazip.com 获得的 WAN IP,它不想连接。
编辑:
问题是:它可以在我家的本地网络中随心所欲地工作,它可以连接,我可以编写一个文本,该文本显示在服务器应用程序中。但是当我让我的一些朋友尝试这个时,他们无法连接到我的服务器..
【问题讨论】:
-
这听起来像是网络问题 - 确保您的 isp 没有阻止您,并且您的路由器已正确转发了这些端口。
-
不是编程问题,这确实是 IT 问题。
-
@DanielA.White 查看我帖子的编辑,它支持帖子转发。正如我所提到的,在我的本地网络中,它工作正常,但在它之外,当我让我的一些朋友尝试它时,客户端无法从他们的网络连接到我的服务器应用程序