Socket 发送接收数据郁闷问题
Dong 2007-09-10 03:13:25 很久很久没来这里,但还上常记得大家。有一问题请大家帮忙,谢谢
我开发一个C#的服务器和客户端通信问题,编程使用的通信对象为:
private IPEndPoint client;
private Socket server;
private NetworkStream stream;
private TextWriter writer;
private TextReader reader;
其实就是平时简单的方式通信,虽然方式简单,但遇到了郁闷的问题,解决很久了,求教大家帮我。情况是这样的。。。
1,如果客户端先给服务端发送数据,那么“无法从传输连接中读取数据。”错误
2,如果服务器端先给客户端发送数据,那么可以发送和接收到,同时,客户端可以接来下发送数据到服务端,这都正确,但这时如果服务端想再发送数据到客户端,那么““无法从传输连接中读取数据。”错误
我该怎么办?
服务端代码:
private void ThreadServer()
{
client = new IPEndPoint(IPAddress.Any,8000);
server = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
server.Blocking = true;
//server.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.SendTimeout,3000);
//server.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReceiveTimeout,3000);
server.Bind(client);
server.Listen(400);
while(true)
{
Socket t = server.Accept();
if(t != null)
{
stream = new NetworkStream(t);
writer = new StreamWriter(stream);
reader = new StreamReader(stream);
try
{
richTextBox1.Text += reader.ReadLine();
richTextBox1.Text += "\n";
}
catch(Exception g)
{
MessageBox.Show(g.Message);
}
writer.WriteLine("欢迎连接到服务器");
writer.Flush();
reader.Close();
writer.Close();
stream.Close();
t.Close();
}
}
}
我该怎么解决?谢谢大家