c#接受tcp数据 急急急
求助各位大侠 我做的接受tcp协议的数据 代码如下
IPAddress lacaladdr = IPAddress.Parse("127.0.0.1");
int port = Int32.Parse("9086");//本地待侦听端口
TcpListener tcpListener = new TcpListener(port);//创建TcpListener对象实例
tcpListener.Start();
TcpClient tcpclient = tcpListener.AcceptTcpClient();
NetworkStream ns = tcpclient.GetStream();
StreamReader sr=new StreamReader(ns);
string reasult = sr.ReadToEnd();
Invoke(new UpdateDisplayDelegate(UpdateDisplay),new object [] {reasult});
tcpclient.Close();
tcpListener.Stop();
为何能够建立连接 却无法接收数据 ?? 提示内容为:-sr.ReadToEnd() “sr.ReadToEnd()”引发了“System.IO.IOException”类型的异常 string {System.IO.IOException} base {"无法从传输连接中读取数据: 无法立即完成一个非阻止性套接字操作。。"} System.SystemException {System.IO.IOException}
c#
tcp
------解决方案--------------------TcpClient 不应该用ReadToEnd来读取,
------解决方案--------------------用Read,TCP的流操作涉及流长度的都有问题
------解决方案-------------------- TcpListener tcpListener = new TcpListener(port);这句好像要有IP地址吧
因为网络传输数据的时候数据是以比特流的方式传输的,所以传输和接收应该以比特流的读取方式读取或写:
if (ns.CanWrite)
{
byte[] myWriteBuffer = Encoding.ASCII.GetBytes("hello");
ns.Write(myWriteBuffer,0,myWriteBuffer.Length);
}
读取也差不多,MSDN上有写,这只是个人意见
------解决方案--------------------
public abstract class PacketTransferBase
{
/// <summary>
/// Socket列表
/// </summary>
public SortedList<int, Socket> SocketClientList { get; private set; }
public PacketTransferBase()
{
SocketClientList = new SortedList<int, Socket>();
}
/// <summary>
/// 保存客户端,以待每次接收后进行判断等功能
/// </summary>
/// <param name="socketClient"></param>