哈哈,努力了有10天吧。从开始学C#的语法,再学计算机网络的基本原理,然后去看别人c# socket 编程的例子。理解了,自己能写出了,完全是自己写出的。还是很有感觉的。
服务器端程序代码
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ServerApp
{
class Program {
public static void Main(string[] args)
{
IPAddress ipA = IPAddress.Parse("127.0.0.1");
int portid;
portid = 5566;
IPEndPoint ipE = new IPEndPoint(ipA,portid);
Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
socket.Bind(ipE);
socket.Listen(1);
Console.WriteLine("listening");
Socket mSocket = socket.Accept();
string message;
message = "welcome to me server";
byte[] b = new byte[1024];
b = Encoding.UTF8.GetBytes(message);
mSocket.Send(b);
b = new byte[1024];
int rbn = mSocket.Receive(b);
message = Encoding.UTF8.GetString(b,0,rbn);
Console.WriteLine(message);
b = new byte[1024];
b = Encoding.UTF8.GetBytes("client,your confirmation is received");
mSocket.Send(b);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
客户端程序代码
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ClientApp
{
class Program {
public static void Main(string[] args)
{
IPAddress serIpA = IPAddress.Parse("127.0.0.1");
IPEndPoint serIpE = new IPEndPoint (serIpA,5566);
Socket socket = new Sockets(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
socket.Connect(serIpE);
byte[] b = new byte[1024];
int rbn;
rbn = socket.Receive(b);
string message;
message = Encoding.UTF8.GetString(b,0,rbn);
Console.WriteLine(message);
b = new byte[1024];
b = Encoding.UTF8.GetBytes("server,i have received your words of welcome");
socket.Send(b);
b = new byte[1024];
rbn = socket.Receive(b);
message = Encoding.UTF8.GetString(b,0,rbn);
Console.WriteLine(message);
socket.Close();
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
我学c#,是因为它是我在.net框架下实现网络互联的工具。我不想,在我实现我的想法的时候,被一些语法上的问题卡住,造成很难受的感觉,并且实现效率也很低下。那么我的C#必须熟悉。这样,也有助于我看懂别人的类似实现的代码,参考他人的思路。在入门的时候,找到好的例子是非常重要的,好的例子,可以让自己很快的把握住知识的关键,而不是跟着堆砌无关的代码。但是,这个阶段,我还不想把C#学得多么深入。现在这个阶段,我还是要把计算机网络的原理搞懂,变成自己的东西,这要求自己深刻体会前人的思想、思路和思维模式,让自己面对事实,也能发展出自己的思路,并利用计算机的原理原则和方法实现自己的思路。然后借助.net框架和C语言,将思路变成实际的互联网产品。在计算机网络原理和C#.net之间,还需要补充的是网络开发的业务逻辑。这是参考别人的代码和思路能够补充的。现在的计算机网络原理还很薄弱,还需要加强,但是因为这方面的书是有限的经典,你又喜欢看书。因此,下面,就是要大量的投入时间在读书上,这是首要。比较次要的,是在读书之余,阅读他人的实现例子。在阅读中产生的想法,及时上机实现。但上机已经不是重点了。平常上机,也就是练一练C#的语法和惯例(idiom)。