读书人

TcpListener+TcpClient的传送效率有关

发布时间: 2012-01-09 21:05:42 作者: rapoo

TcpListener+TcpClient的传送效率问题
我写了这么两个函数来实现一个简单的点对点聊天,但是发现发出信息后要等很长时间才能收到。同样的网络环境,用socket.send和socket.receive来实现同样的功能则速度很快。求高手给出解释。


以下是我实现功能的自己写的类,可以拿去试试,速度很慢
using System;
using System.Net.Sockets;
using System.IO;

namespace p2pbase
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class P2P
{

private Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
private TcpListener tcpl;

public P2P()
{
}
public void listen(int port)//开始监听
{
tcpl = new TcpListener(port); 
       tcpl.Start();
}
public string Accept()//接受信息
{
Socket s = tcpl.AcceptSocket();
Byte[] stream = new Byte[80];
int i=s.Receive(stream) ;
string message = System.Text.Encoding.UTF8.GetString(stream,0,i);

return (message);
}
public void Send(string ip,int port,string msg)//发送信息
{

      TcpClient tcpc = new TcpClient(ip,port);
      NetworkStream tcpStream = tcpc.GetStream();
StreamWriter reqStreamW = new StreamWriter(tcpStream);
reqStreamW.Write(msg);
reqStreamW.Flush();
tcpStream.Close();
tcpc.Close();
}
public void Stop()//结束监听
{
tcpl.Stop();
}
}
}

[解决办法]
up
[解决办法]
TcpClient的效率是比Socket要低,主要是因为TCPCLient是在Socket上又封装了一层。而且使用了流这么一个东西!所以会比较慢!
[解决办法]
越是底层的越快。
[解决办法]
tcp模型中,完成端口效率最高

读书人网 >C#

热点推荐