Socket网络编程学习笔记(5):发送和接收实体类数据

在前面讲述的篇幅中,发送的都是文本信息,我们只要通过Encoding中的几 个方法把文本转化成二进制数组就可以利用Socket来传输了,这对于一些基本的 信息传输能够得到满足,但对于一些复杂的消息交流,则有些“吃力 ”。我们有时候会把一些信息封闭在一个类中,如果Socket能够传送类对 象,那么一些复杂的问题能够通过面向对象来解决了,即方便又安全。大家都知 道,要想在网络上传输信息,必须要经过序列化才行,所以在传送类对象时,首 选必须对该类对象进行序列化,才能够在网络上进行传输。

序列化类对 象有三种序列化方法:

1、Xml序列化

2、Binary序列化

3 、Soap序列化

这几种序列化方法,运用方法相类似,只不过用到的类不 一样。在这里也不一一讲述了,有兴趣的朋友可以到网上搜一搜,相信会有不少 的收获。这里主要讲一下利用Soap序列化来传送消息。

1、首先我们先来 建立一个实体类,用来做消息的载体

类对象

 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4
 5namespace sbwConsole
 6{
 7   [Serializable]
 8  public class SocketData
 9   {
10    private OperateType _operateType;
11     private OperateInfo _operateInfo;
12    private string _connString;
13    private string _clientIP;
14     private string _serverIP;
15
16    /**//// <summary>
17    /// 指令传输数据
18    /// </summary>
19    /// <param name="operateType">指令类型</param>
20     /// <param name="operateInfo">指令信息 </param>
21    /// <param name="connString">ASP数据库连接字符串</param>
22    /// <param name="clientIP">子服务器 IP</param>
23    /// <param name="serverIP">ASP服务器IP</param>
24     public SocketData(OperateType operateType, OperateInfo operateInfo,
25             string connString, string clientIP, string serverIP)
26    {
27      _operateType = operateType;
28      _operateInfo = operateInfo;
29       _connString = connString;
30      _clientIP = clientIP;
31      _serverIP = serverIP;
32    }
33
34    /**//// <summary>
35    /// 指令类 型
36    /// </summary>
37    public OperateType OperateType
38    {
39      get { return _operateType; }
40      set { _operateType = value; }
41    }
42    /**//// <summary>
43     /// 指令信息
44    /// </summary>
45     public OperateInfo OperateInfo
46    {
47      get { return _operateInfo; }
48      set { _operateInfo = value; }
49    }
50    /**//// <summary>
51    /// ASP数据库连接字符串
52    /// </summary>
53    public string ConnString
54     {
55      get { return _connString; }
56       set { _connString = value; }
57    }
58    /**//// <summary>
59    /// 子服务器IP
60    /// </summary>
61    public string ClientIP
62     {
63      get { return _clientIP; }
64      set { _clientIP = value; }
65    }
66    /**//// <summary>
67    /// ASP服务器IP
68    /// </summary>
69    public string ServerIP
70     {
71      get { return _serverIP; }
72      set { _serverIP = value; }
73    }
74  }
75
76   /**//// <summary>
77  /// 指令类型
78  /// </summary>
79  public enum OperateType
80  {
81    /**//// <summary>
82    /// 网站操作
83    /// </summary>
84    Web = 0,
85     /**//// <summary>
86    /// 升级
87    /// </summary>
88    Upgrade,
89    /**//// <summary>
90    /// 迁移
91    /// </summary>
92    Transfer
93  }
94
95   /**//// <summary>
96  /// 指令信息
97  /// </summary>
98  public enum OperateInfo
99  {
100    /**//// <summary>
101    /// 发送
102     /// </summary>
103    Send = 0,
104     /**//// <summary>
105    /// 出错
106    /// </summary>
107    Error,
108    /**//// <summary>
109    /// 成功
110    /// </summary>
111    Success,
112    /**//// <summary>
113    /// 重发
114    /// </summary>
115    SendAgain
116  }
117}
118

时间: 2024-09-18 21:26:56

Socket网络编程学习笔记(5):发送和接收实体类数据的相关文章

Socket网络编程学习笔记(3):利用套接字助手类

在上一篇中已经介绍了利用Socket建立服务端和客户端进行通信,如果需要 的朋友可访问<Socket网络编程学习笔记(2):面向连接的Socket>.在本篇 中,将利用C#套接字的助手类来简化Socket编程,使得刚刚接触到网络编程的 朋友们更容易上手. 跟上篇一样,通过C#套接字的助手类来编程同样分 服务端和客户端. 一.服务端侦听模式 1.创建套接字与 IPEndPoint绑定,并设置为侦听模式. 1//创建IPEndPoint实例 2 IPEndPoint ipep = new IPEn

Socket网络编程学习笔记(1):常用方法介绍

虽然天天上博客园欣赏各位"大侠"的杰作,偶然回首,突然发 现自己已成"潜水者"久矣.本来对于自己有限的水平,有点不好意 思在此发贴,不过潜伏久了,才慢慢意识到老是通过浏览他人的文章虽然能够提 高自己能力,能够及时的获取新技术新思想,但却只能停留在他人的思想上.通 过学习,加上自己的想法,再写出来,让大家来指证错误,不仅能够巩固自己的 知识,也可以让一些跟我一样迷惘的朋友们不用再去走一些弯路,岂不是两全其 美,本着这样的想法,打算把自己平时的所学所想都写下来,欢迎各路

Socket网络编程学习笔记(2):面向连接的Socket

在上一篇中,我列了一些常用的方法,可以说这些方法是一些辅助性的方法 ,对于分析网络中的主机属性非常有用.在这篇中,我将会介绍一下面向连接( TCP)socket编程,其中辅以实例,代码可供下载. 对于TCP的Socket编 程,主要分二部分: 一.服务端Socket侦听: 服务端Socket侦听 主要分以下几个步骤,按照以下几个步骤我们可以很方便的建立起一个Socket侦 听服务,来侦听尝试连接到该服务器的客户Socket,从而建立起连接进行相关通 讯. 1.创建IPEndPoint实例,用于S

Socket网络编程学习笔记(4):TCP消息边界处理

在前面的几篇中,讲了关于套接字Socket以及利用套接字助手类来进行服务 端和客户端之间的通信,在此中间并没有对发送的信息进行任何的处理.在本篇 中将会讲一下TCP通信时的信息边界问题. 通过套接字或其助手类来接收信息时,是从缓存区里一次性把全部的缘存都 读取出来,只要你设置的缓存够大,它就能读取这么多,这样就会导致这样的情 况出现.如果服务端连续发送信息到客户端,如我连续发送字符串 "message 1"."message 2"."message 3&q

Socket网络编程学习笔记(6):使用线程池提高性能(完)

在前几篇介绍中,不论是服务端的侦听还是客户端的连接都是通过新建一个 线程去执行特定功能的.在这种情况下,一量有一个新客户端需要连接,则又得 创建新的线程,而当程序创建新线程时,往往需要大量的内部开销,这对程序的 性能有一定的影响.在.NET库中提供了一种方法,可以避免一些开销.而在 Socket通讯中还有另一种访求那就是异步Socket,我不知道用这种方式的性能如 何,在这里且不管这种形式,主要来看一下用线程池解决问题. Windows操作系允许用户维持一池"预先建立的"线程,这个线程

python网络编程学习笔记(二):socket建立网络客户端_python

1.建立socket 建立socket对象需要搞清通信类型和协议家族.通信类型指明了用什么协议来传输数据.协议的例子包括IPv4.IPv6.IPX\SPX.AFP.对于internet通信,通信类型基本上都是AF_INET(和IPv4对应).协议家族一般表示TCP通信的SOCK_STREAM或者表示UDP通信的SOCK_DGRAM.因此对于TCP通信,建立一个socket连接的语句为:s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)对于UDP通

python网络编程学习笔记(三):socket网络服务器_python

1.TCP连接的建立方法 客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较. 步骤 TCP客户端 TCP服务器 第一步 建立socket对象  建立socket对象 第二步 调用connect()建立一个和服务器的连接 设置socket选项(可选) 第三步 无 绑定到一个端口(也可以是一个指定的网卡) 第四步 无 侦听连接 下面具体来讲这四步的建立方法: 第一步,建立socket对象:这里与客户端一样,依然是: s=socket.socket(socket.

python网络编程学习笔记(五):socket的一些补充_python

1.半开放socket 利用shutdown()函数使socket双向数据传输变为单向数据传输.shutdown()需要一个单独的参数,该参数表示了如何关闭socket.具体为:0表示禁止将来读:1 表示禁止将来写:2表示禁止将来读和写. 2.timeouts控制超时 调用socket的settimeout()函数,向其传递参数,表明超时时间设置.当访问一个socket,如果经过了参数设定的时间后,什么都没有发生,则会产生一个socket.timeout异常.例如:当程序运行后,会等待数据传入.

python网络编程学习笔记(一)_python

学习用书:<python 网络编程基础>作者John Goerzen 第一部分底层网络学习         Python提供了访问底层操作系统Socket接口的全部方法,需要的时候这些接口可以提供灵活而强有力的功能. (1)基本客户端操作         在<python 网络编程基础>一书中,作者列出了一个简单的Python客户端程序,具体如下: 复制代码 代码如下: import socket,sysport =70host=sys.argv[1] filename=sys.a