source: trunk/CrypPlugins/KeySearcher/Server/PlatformIndependentWrapper.cs @ 2208

Last change on this file since 2208 was 2208, checked in by Sven Rech, 11 years ago

KeySearcher codeformatting stuff

File size: 2.1 KB
Line 
1using System;
2using System.Text;
3using System.Net.Sockets;
4using System.Threading;
5using System.Net;
6using System.IO;
7
8/// <summary>
9/// A wrapper class which provides platform independent methods
10/// of sending and receiving primitives. Everything numeric type
11/// is sent and received as big endian.
12/// </summary>
13public class PlatformIndependentWrapper
14{
15    private NetworkStream stream;
16
17    public PlatformIndependentWrapper(TcpClient client)
18    {
19        this.stream = client.GetStream();
20    }
21
22    public String ReadString()
23    {
24        int strlen = ReadInt();
25        byte[] str = ReadArray(strlen);
26        return Encoding.ASCII.GetString(str);
27    }
28
29    public int ReadInt()
30    {
31        byte[] bytes = ReadArray(4);
32        if (BitConverter.IsLittleEndian)
33        {
34            Array.Reverse(bytes);
35        }
36        return BitConverter.ToInt32(bytes, 0);
37    }
38
39    public float ReadFloat()
40    {
41        byte[] bytes = ReadArray(4);
42        return BitConverter.ToSingle(bytes, 0);
43    }
44
45    public byte[] ReadArray(int num)
46    {
47        byte[] buffer = new byte[num];
48        int rec = 0;
49        int offset = 0;
50        do{
51            rec = stream.Read(buffer, offset, num-offset);
52            offset += rec;
53        } while(rec != 0 && offset< num);
54
55        if(rec == 0)
56        {
57            throw new IOException("Socket has been closed");
58        }
59
60        return buffer;
61    }
62
63    public void WriteString(String str)
64    {
65        if (str == null)
66        {
67            WriteInt(0);
68        }
69        else
70        {
71            byte[] byted = Encoding.ASCII.GetBytes(str);
72            WriteInt(byted.Length);
73            WriteBytes(byted);
74        }
75    }
76
77    public void WriteInt(int i)
78    {
79        byte[] byted = BitConverter.GetBytes(i);
80        if (BitConverter.IsLittleEndian)
81        {
82            Array.Reverse(byted);
83        }
84
85        WriteBytes(byted);
86    }
87
88    public void WriteBytes(byte[] bytes)
89    {
90        stream.Write(bytes, 0, bytes.Length);
91    }
92}
Note: See TracBrowser for help on using the repository browser.