小小回忆录 2015-03-20 06:49 采纳率: 0%
浏览 7178

Socket如何实现一个客户端连接多个服务器,用异步通信的方法编写的

private void ReadCallBack(IAsyncResult ar)
{
var state = (StateObject) ar.AsyncState;
if ((state.Client == null) || (!state.Client.Connected))
return;
var networkStream = state.Client.GetStream();

        try
        {
            var number= networkStream.EndRead(ar);
            state.BytesRead += number;
            if (number > 0)
            {
                var by = new byte[number];
                Array.Copy(state.Buffer, 0, by, 0, number);
                Rec(by);//这个是一个处理服务器传回的数据,
                networkStream.BeginRead(state.Buffer, 0, StateObject.BufferSize, ReadCallBack, state);
            }

            else
            {
                networkStream.Close();
                state.Client.Close();
            }



        }
        catch (Exception)
        {
            //_tcp1.Close();
            //_networkStream.Close();

        }
    }


             private void AsynRead(TcpClient tcpClient)
    {
        var state = new StateObject {Client = tcpClient};
        var stream = tcpClient.GetStream();
        if (stream.CanRead)
        {
            try
            {
                var ar = stream.BeginRead(state.Buffer, 0, StateObject.BufferSize, ReadCallBack, state);
            }
            catch (Exception)
            {
                // ignored
            }
        }
    }


             private void ConnectCallBack(IAsyncResult ar)
    {
        AllDone.Set();
        var t = (TcpClient) ar.AsyncState;
        try
        {
            t.EndConnect(ar);
        }
        catch (Exception)
        {
            // ignored
        }
    }
  • 写回答

2条回答 默认 最新

  • max_min_ 2015-03-20 10:11
    关注

    异步操作知道了,连接一个服务器知道了,其他的也这么处理就好了呀!每次连接独立处理就好了~~

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)