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();
}
}
c# socket传输struct类型的更多相关文章
- C++ socket 传输不同类型数据的四种方式
使用socket传输组织好的不同类型数据,有四种不同的方式(我知道的嘿嘿): a. 结构体 b. Json序列化 c. 类对象 d. protobuf 下面逐一整理一下,方便以后进行项目开发. 1. ...
- Protobuf3 + Netty4: 在socket上传输多种类型的protobuf数据
Protobuf序列化的字节流数据是不能自描述的,当我们通过socket把数据发送到Client时,Client必须知道发送的是什么类型的数据,才能正确的反序列化它.这严重影响限制了C/S功能的实现, ...
- [C#技术参考]Socket传输结构数据
最近在做一个机器人项目,要实时的接收机器人传回的坐标信息,并在客户端显示当前的地图和机器人的位置.当然坐标的回传是用的Socket,用的是C++的结构体表示的坐标信息.但是C#不能像C++那样很eas ...
- Python Socket传输文件
发送端可以不停的发送新文件,接收端可以不停的接收新文件. 例如:发送端输入:e:\visio.rar,接收端会默认保存为 e:\new_visio.rar,支持多并发,具体实现如下: 接收端: 方法一 ...
- 网络编程:tcp、udp、socket、struct、socketserver
一.TCP.UDP 一.ARP(Address Resolution Protocol)即地址解析协议,用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址. 二.在网络通信中 ...
- socket编程(struct报头)网络编程
目录 一:socket编程 1.简介 2.参数说明: 3.socket套接字方法 4.socket编程思路: 二:socket套接字编程 1.socket简易版编程 2.通信循环 三:通信循环及代码优 ...
- python socket 传输文件
推荐资料 https://www.cnblogs.com/xiaokang01/p/9865724.html socket传输文件 思路: # 先将报头转换成字符串(json.dumps), 再将字符 ...
- unity探索者之socket传输protobuf字节流(一)
版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/6974229.html 近期在做一个棋牌项目,需要用到socket传输protobu ...
- sockaddr struct 类型重定义
windows.h和winsock2.h有类型重定义我是知道的,本来就一个库来说没问题,把winsock2放到windows.h前或先定义WIN32_LEAN_AND_MEAN都能解决问题但现的出了问 ...
随机推荐
- 安卓自动化测试工具一:Monkey
一:monkey的用途:主要用于稳定性测试,模拟用户操作 二.monkey的基本使用 monkey文档地址:"<android_sdk>/docs/tools/help/monk ...
- Unity3d请求webservice
我们在对接第三方sdk时,第三方sdk通常会以一个webservice接口的形式供我们来调用.而这些接口会以提供我们get,post,soap等协议来进行访问.get,post方法相信大家都比较熟悉了 ...
- thinkphp判断是否为手机
一.问题: 近日准备给自己的网站做一个小升级,让用户在手机二维码扫描的时候显示适合手机端来展示的模版[我用的是ThinkPHP3.0],代码是参考别人的 二.实现方法: 这里先说下大概的一个思路 简单 ...
- 在sublime_text3中实现项目的跳转
作为学习前端的小白,选择了sublime_text3作为学习的编译器.学习的过程是艰辛的,但也是快乐的.遇到自己不会的,有时候会折腾好几个小时,在实现预期效果的时候,那种兴奋真的难以言述. 今天,在学 ...
- Jasper_style
(1) text field <style name="Header" forecolor="#FFFFFF" backcolor="#002D ...
- X11 五子棋
#include <X11/Xlib.h> #include <stdlib.h> #include <X11/keysym.h> #include <cst ...
- ContourLine
#define MULTI_PLOT true //Determine whether or not to plot multiple iterations. #define X_MAX 1.0 // ...
- C# 语言规范_版本5.0 (第11章 结构)
1. 结构 结构与类的相似之处在于,它们都表示可以包含数据成员和函数成员的数据结构.但是,与类不同,结构是一种值类型,并且不需要堆分配.结构类型的变量直接包含了该结构的数据,而类类型的变量所包含的只是 ...
- Linux 下搭建jsp服务器(配置jsp开发环境)
Linux 做为服务器的高效一直时为人所熟知的了,在linux 上搭建各种各样的服务器和开发环境也时学计算机的人常做的.以下时最近在linux配置jsp服务器的全过程,包含一些基本步骤和排错过程: 1 ...
- BAPI_GOODSMVT_CREATE 移动类型311 CODE = '04' 代码
DATA: MAT_DOC LIKE BAPI2017_GM_HEAD_RET-MAT_DOC. "物料凭证编号 DATA: GMHEAD LIKE BAPI2017_GM_H ...