zoukankan      html  css  js  c++  java
  • c# socket传输struct类型

     data结构体类型

        public struct datas
        {

            public string test1;

            public string test2;
        }

    //socket服务器端

    public void SocketServer()
            {
                Socket listener = new Socket(AddressFamily.InterNetwork,
                                             SocketType.Stream,
                                             ProtocolType.Tcp);
                listener.Bind(new IPEndPoint(getLocalmachineIPAddress(), 2323));
                listener.Listen(10);

                while (true)
                {
                    Socket socket = listener.Accept();
                    string receivedValue = string.Empty;

                    while (true)
                    {
                        byte[] receivedBytes = new byte[1024];
                        int numBytes = socket.Receive(receivedBytes);
                        Console.WriteLine("Receiving .");
                        receivedValue += Encoding.ASCII.GetString(receivedBytes,
                                          0, numBytes);
                        if (receivedValue.IndexOf("[FINAL]") > -1)
                        {
                            break;
                        }
                    }

                    byte[] buffer = new byte[1024000];
                    if (receivedValue.Contains("get gateway rooms"))
                    {
                        MemoryStream mStream = new MemoryStream();
                        BinaryFormatter bf = new BinaryFormatter();
                        datas sendData;
                        sendData.m_DictRooms = FormMain.DictRooms;
                        sendData.m_DictRoomNameText = FormMain.DictRoomNameText;
                        bf.Serialize(mStream, sendData);
                        mStream.Flush();
                        mStream.Position = 0;
                        mStream.Read(buffer, 0, buffer.Length);
                    }
                    //string replyValue = "Message successfully received.";
                    //byte[] replyMessage = Encoding.ASCII.GetBytes(replyValue);
                    socket.Send(buffer);
                    socket.Shutdown(SocketShutdown.Both);
                    socket.Close();
                }
                listener.Close();
            }

    //socket客户端

            private void socketClient(object sender, EventArgs e)
            {
                if (comboBoxGateway.SelectedItem != null)
                {
                    byte[] receivedBytes = new byte[1024000];
                    IPHostEntry ipHost = Dns.Resolve(comboBoxGateway.SelectedItem.ToString());
                    IPAddress ipAddress = ipHost.AddressList[0];
                    IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 2323);

                    Socket sk = new Socket(AddressFamily.InterNetwork,
                                                 SocketType.Stream,
                                                 ProtocolType.Tcp);
                    sk.Connect(ipEndPoint);
                    string sendingMessage = "get gateway rooms";
                    byte[] forwardMessage = Encoding.ASCII.GetBytes(sendingMessage
                       + "[FINAL]");
                    sk.Send(forwardMessage);
                    int totalBytesReceived = sk.Receive(receivedBytes);
                    MemoryStream mStream = new MemoryStream();
                    //ReceiveDatas = bf.Deserialize(receivedBytes,mStream );
                    mStream.Write(receivedBytes, 0, receivedBytes.Length);
                    mStream.Flush();
                    mStream.Position = 0;
                    BinaryFormatter bf = new BinaryFormatter();
                    if (mStream.Capacity > 0)
                    {
                       datas receiveDatas = (datas)bf.Deserialize(mStream);
                    }
                    sk.Shutdown(SocketShutdown.Both);
                    sk.Close();

                    //加载新选择的网关房间
                    InitializeSelectRoomsTab();
                }
            }

  • 相关阅读:
    读Pyqt4教程,带你入门Pyqt4 _009
    [Objective-C] 006_Protocol(协议)
    [JavaWeb基础] 003.JAVA访问Mysql数据库
    keras学习笔记-bili莫烦
    CentOS7安装codeblocks
    [转] Linux多线程编程之pthread
    [转] C++ 的关键字(保留字)完整介绍
    如何生成红黑树?一步一步画给你看(从二叉查找树到2-3树再到红黑树)
    C++标准库(体系结构与内核分析)(侯捷第二讲)(OOP GP、分配器、容器之间关系、list、萃取机、vector、array、deque、stack、queue、RB-tree、set、multiset、map、multimap)
    C++标准库(体系结构与内核分析)(侯捷第一讲)(标准库介绍、STL、六大部件、算法、容器分类、Array、Vector、List、Forward-List、Deque、stack、queue、multiset、multimap、分配器)
  • 原文地址:https://www.cnblogs.com/tianmochou/p/4921069.html
Copyright © 2011-2022 走看看