tcpClient和服务端有关问题、奇怪了
tcpClient和服务端问题、奇怪了。
为什么不能一直发送消息和一直接收消息哇。求改下我代码,哪里有问题
接收过一次消息就会不再等待了,这个代码 read.ReadToEnd(); ,等待一次消息下次就不等待了。愁哇。学习。
我服务器端代码是
TcpListener tcp = new TcpListener(new System.Net.IPEndPoint(System.Net.IPAddress.Any,8888));
tcp.Start(100);
while (true)
{
var client = tcp.AcceptTcpClient();
StreamReader read = new StreamReader(client.GetStream());
Console.WriteLine("等待接收数据");
string msg= read.ReadToEnd();
Console.WriteLine("数据是:" + msg);
}
客户端代码是
static void Main(string[] args)
{
TcpClient client = new TcpClient("127.0.0.1",8888);
while (true)
{
Console.WriteLine("输入发送的消息");
StreamWriter write = new StreamWriter(client.GetStream());
write.Write(Console.ReadLine());
}
}
------解决思路----------------------
这只是一个玩具,实际程序是一个通用的、考虑性能和资源的框架,肯定不会这样写。
先按照你的思路给你写一个玩具:
为什么不能一直发送消息和一直接收消息哇。求改下我代码,哪里有问题
接收过一次消息就会不再等待了,这个代码 read.ReadToEnd(); ,等待一次消息下次就不等待了。愁哇。学习。
我服务器端代码是
TcpListener tcp = new TcpListener(new System.Net.IPEndPoint(System.Net.IPAddress.Any,8888));
tcp.Start(100);
while (true)
{
var client = tcp.AcceptTcpClient();
StreamReader read = new StreamReader(client.GetStream());
Console.WriteLine("等待接收数据");
string msg= read.ReadToEnd();
Console.WriteLine("数据是:" + msg);
}
客户端代码是
static void Main(string[] args)
{
TcpClient client = new TcpClient("127.0.0.1",8888);
while (true)
{
Console.WriteLine("输入发送的消息");
StreamWriter write = new StreamWriter(client.GetStream());
write.Write(Console.ReadLine());
}
}
------解决思路----------------------
这只是一个玩具,实际程序是一个通用的、考虑性能和资源的框架,肯定不会这样写。
先按照你的思路给你写一个玩具:
using System;
using System.IO;
using System.Net.Sockets;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
const int port = 8881;
static void Main(string[] args)
{
Svr();
Client();
loop:
new ManualResetEvent(false).WaitOne(10000);
Console.WriteLine("主进程来露一下头--{0}", DateTime.Now);
goto loop;
}
private static void Client()
{
ThreadPool.QueueUserWorkItem(h =>
{
TcpClient client = new TcpClient("127.0.0.1", port);
StreamWriter write = new StreamWriter(client.GetStream());
while (true)
{
Console.WriteLine("输入发送的消息");
write.Write(Console.ReadLine());
write.Write("\r\n");
write.Flush();
}
});
}
static void Svr()
{
ThreadPool.QueueUserWorkItem(h =>
{
TcpListener tcp = new TcpListener(new System.Net.IPEndPoint(System.Net.IPAddress.Any, port));
tcp.Start();
var client = tcp.AcceptTcpClient();
while (true)
{
StreamReader read = new StreamReader(client.GetStream());
Console.WriteLine("等待接收数据");
string msg = read.ReadLine();
Console.WriteLine("数据是:" + msg);
}
});
}
}