第一步。新建一个可序列化的类库
[System.Serializable]
public class TestClass
{
private string name;
private int age;
private string message;
public string Message
{
get { return message; }
set { message = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
}
第二步,建立服务器端
class program
{
static void Main()
{
System.Net.IPAddress[] ipaddress = System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName());
System.Net.Sockets.TcpListener tl = new System.Net.Sockets.TcpListener(System.Net.IPAddress.Parse("127.0.0.1"),2009);
tl.Start();
System.IAsyncResult ia2 = tl.BeginAcceptTcpClient(delegate(System.IAsyncResult ia)
{
System.Net.Sockets.TcpListener tl2 = ia.AsyncState as System.Net.Sockets.TcpListener;
System.Net.Sockets.TcpClient tc2 = tl2.EndAcceptTcpClient(ia);
new program().GetClient(tc2);
},
tl
);
System.Threading.Thread.Sleep(0);
System.Console.ReadLine();
}
public void GetClient(System.Net.Sockets.TcpClient tc)
{
System.Net.Sockets.NetworkStream ns = tc.GetStream();
TestClass tcl = new TestClass();
tcl.Age = 10;
tcl.Name = "xingming";
tcl.Message = "is a new message";
System.IO.MemoryStream ms = new System.IO.MemoryStream();
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf =
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
bf.Serialize(ms, tcl);
byte[] bt = ms.GetBuffer();//这句很重要
ns.BeginWrite(bt, 0, bt.Length, delegate(System.IAsyncResult ia)//开始异步传输
{
System.Console.WriteLine("传送数据已经成功!");
System.Net.Sockets.NetworkStream ns2 = ia.AsyncState as System.Net.Sockets.NetworkStream;
ns2.EndRead(ia);
},
ns
);
}
}
第三步:建立客户端
class program
{
static void Main()
{
//System.Net.IPAddress[] ipaddress= new
// System.Net.IPAddress(System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName()));
//System.Net.IPAddress[] ipaddress = System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName());
System.Net.Sockets.TcpClient tc = new System.Net.Sockets.TcpClient();
tc.Connect(System.Net.IPAddress.Parse("127.0.0.1"), 2009);
System.Net.Sockets.NetworkStream ns = tc.GetStream();
//byte[] bt = new byte[ns.Length];
//ns.Read(bt, 0, ns.Length);
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf =
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
TestClass tcl= bf.Deserialize(ns) as TestClass;
System.Console.WriteLine("已经接收到数据!");
System.Console.WriteLine(tcl.Name);
System.Console.WriteLine(tcl.Age);
System.Console.WriteLine(tcl.Message);
System.Console.ReadLine();
}
}