NetworkComms.Net框架Tcp通讯笔记

实例源码

1.项目需要引用NetworkCommsDotNet.dll(NetworkComms.Net通讯框架),如果要序列号还需要引入protobuf-   net.dll(NetworkCommsDotNet提供多种序列化方式,这个最常用)

2. 

        A aaa = null;
        public List connectionInfos;

        public List connectionListenerBases;        

private void button1_Click(object sender, EventArgs e)
        {
            //IP地址和端口

            IPEndPoint thePoint = new IPEndPoint(IPAddress.Parse(textBox1.Text), int.Parse(textBox2.Text));

            //开始监听此IP和端口  使用TCP协议
            connectionListenerBases = Connection.StartListening(ConnectionType.TCP, thePoint);
            //关联消息类型为GetName的消息的处理方法

            NetworkComms.AppendGlobalIncomingPacketHandler("GetName", IncomingMsgHandle);
            
            button1.Text = "已经开始监听";
            
        }

        private void IncomingMsgHandle(PacketHeader header, Connection connection, string msg)
        { 
                aaa = new A();

                connection.SendObject("ResName", aaa);
        }

此处是服务端的监听和时间消息处理。

获取到客户端传过来的“GetName”给客户端返回一个“ResName”的对象类型

     客户端步骤:创建IPEndPoint对象------监听IPEndPoint--------消息处理

注:StartListening是一个静态方法,是为监听列表添加一个监听地址,也就是说,可以写个列表添加多个监听。因为是静态没有实例化,所以想获取当前服务器的连接ip信息的话,需要用NetworkComms类的AllConnectionInfo()方法

信息处理,请参考:https://blog.csdn.net/networkcomms/article/details/44218217

3.传输类的时候序列化的语法为(需要导入protobuf-   net.dll)

    [ProtoContract]
    public class A
    {
        public A()
        {
            Age = Guid.NewGuid().ToString();
            Name = Guid.NewGuid().ToString();
            DT = DateTime.Now.Millisecond;
        }

        [ProtoMember(1)]
        public string Age { get; private set; }
        [ProtoMember(2)]
        public string Name { get; private set; }

        [ProtoMember(3)]
        public int DT { get; private set; } 

        
    }

4.客户端连接服务器(客户端的ip是本机ip,端口没设置的情况下是随机分配的(一般随机分配就好))

        //连接信息类
        public ConnectionInfo connnectionInfo = null;

        //连接类
        Connection connection;

            connnectionInfo = new ConnectionInfo(Ip,端口));

            //如果不成功,会弹出异常信息
            connection = TCPConnection.GetConnection(connnectionInfo);

客户端消息处理:

 A resMsg = connection.SendReceiveObject("GetName", "ResName", 5000, "111");

"GetName"发送的数据名

"ResName"接收的数据名 

5000, 超时时间(毫秒)

"111"发送的数据

 

 

有需要的朋友,可以下一下我发的完整的实例

你可能感兴趣的:(框架,Tcp通讯)