110,534
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 发生数据至服务器
/// </summary>
/// <param name="msg"></param>
public void sendMessage(string msg)
{
try
{
msg = String.Format("[length={0}]{1}", msg.Length, msg);
//获取缓存
byte[] temp = Encoding.Unicode.GetBytes(msg);
try
{
//发送至服务器
streamToServer.Write(temp, 0, temp.Length);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
lock (streamToServer)
{
AsyncCallback callBack = new AsyncCallback(ReadComplete);
streamToServer.BeginRead(buffer, 0, BufferSize, callBack, null);
}
}
catch { }
}
/// <summary>
/// 数据读取
/// </summary>
/// <param name="ar"></param>
private void ReadComplete(IAsyncResult ar)
{
int bytesRead;
try
{
lock (streamToServer)
{
bytesRead = streamToServer.EndRead(ar);
}
if (bytesRead == 0) throw new Exception("没有数据");
string msg = Encoding.Unicode.GetString(buffer, 0, bytesRead);
//清除缓存,避免脏读
Array.Clear(buffer, 0, buffer.Length);
//获取实际的字符串
string[] msgArray = handler.GetActualString(msg);
foreach (string ArrStr in msgArray)
{
Console.WriteLine("获取到的数据: {0}", ArrStr);
}
lock (streamToServer)
{
AsyncCallback callBack = new AsyncCallback(ReadComplete);
streamToServer.BeginRead(buffer, 0, BufferSize, callBack, null);
}
}
catch (Exception ex)
{
if (streamToServer != null) streamToServer.Dispose();
client.Close();
Console.WriteLine(ex.Message);
}
}
stream.Send(data,1, data.Length);
var len = stream.Read(buffer,0, Buffer.Length);