日期:2014-05-17  浏览次数:20679 次

使用TcpListener,TcpClient建立连接后,能否由服务器端通过该链接反馈信息到客户端TcpClient
使用TcpListener,TcpClient建立连接后,TcpListener侦听并接受数据后一般需要反馈一个信息给客户端,如数据完整性或者处理结果。能否通过已经建立的链接直接传递,还是需要重新建立一次链接,由在客户端使用TcpListener进行侦听?如果能直接利用已经建立的链接,从服务器端返回信息到客户端,怎么做呢

源码:
服务器端:
public void StartListen()

TcpListener serverListener=new TcpListener(9999);
serverListener.Start();

while(true)
{
TcpClient tcpClient=serverListener.AcceptTcpClient();
NetworkStream netStream=tcpClient.GetStream();
StreamReader sr=new StreamReader(netStream);


string buffer=""; 
string received="";
received=sr.ReadLine();

while(received!=null && received.Length!=0)
{
buffer+=received;
buffer+="\r\n";
received=sr.ReadLine();

listBox1.Items.Add(buffer+serverListener.AcceptSocket().RemoteEndPoint);

sr.Close();
netStream.Close();
tcpClient.Close();
}
}


客户端:

private void button1_Click(object sender, System.EventArgs e)
{
TcpClient tcpClient=new TcpClient("127.0.0.1",9999);

NetworkStream netStream=tcpClient.GetStream();
StreamWriter sw=new StreamWriter(netStream);
sw.Write("测试消息");
sw.Close();

netStream.Close();
tcpClient.Close();
}



附带请教一个问题:

TcpListener serverListener=new TcpListener(port);//创建TcpListener对象实例 
这一句编译的时候会有警告:
warning CS0618: “System.Net.Sockets.TcpListener.TcpListener(int)”已过时:“Use TcpListener(IPAddress localaddr, int port).” 是什么原因呢?



------解决方案--------------------
连接建立后应该会获得一个TcpClient或是Socket对象,然后可以根据这个对象获得一个NetworkStream对象,这个流对象可以写可以读,通过它就可以完成网络数据的收发。
------解决方案--------------------
为什么还要使用StreamWrite或StreamReader?我就是直接使用NetworkStream的Read、Write方法。

没有代码。
------解决方案--------------------
顶楼主!~~~~~~~~~