Я пытаюсь создать класс для простых клиент-серверных подключений. Внутри этого класса находится клиент на стороне сервера, но он не будет принимать данные, записанные на сервер NetworkStream. Если вам интересно, я намереваюсь, чтобы все данные проходили через серверную программу, прежде чем отправлять их клиенту, поэтому мне нужно что-то для обработки всех данных в NetworkStream (отсюда клиент на стороне сервера). Вот мой класс:
public class ConnectionServer
{
public readonly IPAddress ServerIP;
public readonly IPAddress LocalIP;
public readonly int Port;
private TcpListener ServerIn;
private Socket ServerSocket;
private TcpClient ServerSideClient;
private NetworkStream NetStream;
public StreamReader ServerInput;
public StreamWriter ServerOutput;
public ConnectionServer(int port)
{
try
{
Port = port;
ServerIP = IPAddress.Parse(NetHelper.GetPublicIP());
LocalIP = IPAddress.Parse(NetHelper.GetLocalIP());
ServerIn = new TcpListener(IPAddress.Any, Port);
ServerIn.Start();
Console.WriteLine("Server Started At: " + ServerIP.ToString() + ":" + Convert.ToString(Port));
ServerSideClient = new TcpClient("localhost", Port);
ServerSocket = ServerIn.AcceptSocket();
Console.WriteLine("Server-Side Client Socket Accepted.");
NetStream = ServerSideClient.GetStream();
ServerInput = new StreamReader(NetStream);
ServerOutput = new StreamWriter(NetStream);
ServerOutput.AutoFlush = true;
Console.WriteLine("All Streams Initialized.");
ServerOutput.WriteLine("Testing Server-Side Client.");
Console.WriteLine("Test Message Sent.");
Console.WriteLine(ServerInput.ReadLine());
}
finally
{
}
}
~ConnectionServer()
{
ServerInput.Dispose();
ServerSideClient.Close();
}
}
Он ничего не пишет на Console.WriteLine(ServerInput.ReadLine());
. Я не могу понять, почему он не получает сообщение из потока. Помогите, пожалуйста?
ServerSocket
— это один клиент, который подключился к вам. Попробуйте прочитать это с помощью.Read()
.ServerSideClient
- это просто петля, которая вам, вероятно, не нужна. (и, вероятно, скрывает любые настоящие внешние связи) - person   schedule 13.06.2013