这是带有c#的TCP代理,我希望多个客户端到我的代理(如下面的代码),然后到服务器只使用一个TCP连接(因为服务器是旧的PLC设备,它只支持一个连接)。
我的问题是如何使用从代理到服务器的单个TCP连接。
我的英语很差,非常感谢你的帮助。
class Program
{
// proxy listenning
static TcpListener listener = new TcpListener(IPAddress.Any, 9600);
const int BUFFER_SIZE = 4096;
static void Main(string[] args)
{
listener.Start();
// Accept clients.
while (true)
{
var client = listener.AcceptTcpClient();
var clientStream = client.GetStream();
//problem was here: how to use just single connection
TcpClient server = new TcpClient("10.110.59.1", 9600);
var serverStream = server.GetStream();
new Task(() => {
new Task(() => {
byte[] message = new byte[BUFFER_SIZE];
int clientBytes;
while (true)
{
clientBytes = clientStream.Read(message, 0, BUFFER_SIZE);
serverStream.Write(message, 0, clientBytes);
}).Start();
new Task(() => {
byte[] message = new byte[BUFFER_SIZE];
int serverBytes;
while (true)
{
serverBytes = serverStream.Read(message, 0, BUFFER_SIZE);
clientStream.Write(message, 0, serverBytes);
}
client.Close();
}).Start();
}).Start();
}
}//end main
}//end class