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();
            }
        }

c# socket传输struct类型的更多相关文章

  1. C++ socket 传输不同类型数据的四种方式

    使用socket传输组织好的不同类型数据,有四种不同的方式(我知道的嘿嘿): a. 结构体 b. Json序列化 c. 类对象 d. protobuf 下面逐一整理一下,方便以后进行项目开发. 1. ...

  2. Protobuf3 + Netty4: 在socket上传输多种类型的protobuf数据

    Protobuf序列化的字节流数据是不能自描述的,当我们通过socket把数据发送到Client时,Client必须知道发送的是什么类型的数据,才能正确的反序列化它.这严重影响限制了C/S功能的实现, ...

  3. [C#技术参考]Socket传输结构数据

    最近在做一个机器人项目,要实时的接收机器人传回的坐标信息,并在客户端显示当前的地图和机器人的位置.当然坐标的回传是用的Socket,用的是C++的结构体表示的坐标信息.但是C#不能像C++那样很eas ...

  4. Python Socket传输文件

    发送端可以不停的发送新文件,接收端可以不停的接收新文件. 例如:发送端输入:e:\visio.rar,接收端会默认保存为 e:\new_visio.rar,支持多并发,具体实现如下: 接收端: 方法一 ...

  5. 网络编程:tcp、udp、socket、struct、socketserver

    一.TCP.UDP 一.ARP(Address Resolution Protocol)即地址解析协议,用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址. 二.在网络通信中 ...

  6. socket编程(struct报头)网络编程

    目录 一:socket编程 1.简介 2.参数说明: 3.socket套接字方法 4.socket编程思路: 二:socket套接字编程 1.socket简易版编程 2.通信循环 三:通信循环及代码优 ...

  7. python socket 传输文件

    推荐资料 https://www.cnblogs.com/xiaokang01/p/9865724.html socket传输文件 思路: # 先将报头转换成字符串(json.dumps), 再将字符 ...

  8. unity探索者之socket传输protobuf字节流(一)

    版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/6974229.html 近期在做一个棋牌项目,需要用到socket传输protobu ...

  9. sockaddr struct 类型重定义

    windows.h和winsock2.h有类型重定义我是知道的,本来就一个库来说没问题,把winsock2放到windows.h前或先定义WIN32_LEAN_AND_MEAN都能解决问题但现的出了问 ...

随机推荐

  1. json格式化和查看工具

    以前一直以来都觉得xml个可读性要比json的可读性好,后来使用了JSON Viewer这个小工具之后,发现自己错了.之前认为json的可读性差,完全是因为没有很好的查看工具.JSON Viewer这 ...

  2. javaScript设计模式之常用工厂模式

    工厂函数 定义 由一个工厂对象决定创建某一种产品对象类的实例,主要用来创建同一类对象. 使用场景 比如说你是到一个买宠物的店,里面有很多不同的宠物,你只需要说出宠物的名字给店员就行了. // 狗的类 ...

  3. 利用VR技术,走进白宫,走进奥巴马

    奥马巴卸任演讲由诺基亚OZO全程360° VR直播,并不是每个人都能去白宫拜访,一窥白宫内部的模样,更不可能有多少人有机会在奥马巴面前听他讲讲他的家.   现在前任总统巴拉克奥巴马以及其夫人米歇尔奥巴 ...

  4. 简单入门使用GitHub总结

    简单入门使用GitHub总结 ps: 试着自己弄一下GitHub,发现问题多多,中间还差点把自己的资料给全部弄没了(直接摔啦~). 然后网上查找各种资料进行设置终于成功了. 以下是参考的资料链接: G ...

  5. 初遇locust

    大概有四个月没有用过PYTHON的我. 今天差点都不知道怎么运行了. 说起来真是丢人呐. 幸好还是存留着一点点印象,再加上看了一下以前写的几篇文章, 还是比较快的想起来了.不然真的是要崩溃了. 刚开始 ...

  6. 前端自动化部署之gulp

    1.首先需要安装node+npm(这里不再叙述,网上教程一大堆) 2.gulp全局安装:npm install -g gulp 3.cd进入到你的项目目录,这里使用demo文件夹为我的示例项目 4.在 ...

  7. Tiny64140之初始化时钟

    简介: Tiny6410 时钟逻辑为整个芯片提供了3种时钟分别为FCLK.HCLK.PCLK有三个PLL 分别为APLL.MPLL.EPLL.   APLL 专用于CPU   MPLL 供AHB(存储 ...

  8. shell的入门

    shell :弱类型. 解释型语言 从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 ...

  9. 安装器---Inno Setup

    Inno Setup[1]  用Delphi写成,其官方网站同时也提供源程序免费下载.它虽不能与Installshield这类恐龙级的安装制作软件相比,但也当之无愧算是后起之秀.Inno Setup是 ...

  10. git和SVN的区别

    1)Git是分布式的,SVN不是: 这 是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别.好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交.合并, ...