通过控制台实现 socket 的简单的例子
首先定义一个服务器端和一个客户端,同时引用命名空间:using System.Net; 和 using System.Net.Sockets;
(还有要清楚一点:socket 是基于TCP 连接的,本身有通道,使用的时候只是new 一个就可以了)
然后先实现服务器端:
主要代码:
static void Main(string[] args)
{
Console.WriteLine("服务器");
//new一个通道来实现客户端和服务器端的通信
Socket s = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//创建一个侦听点
IPEndPoint iep = new IPEndPoint(IPAdress.Any,20000);
//绑定到通道上
s.Bind(iep);
//监听
s.Listen(6);//允许挂起的数量,不能超过10
//开始处理
Socket worker = s.Accept();
try
{
byte[] buf = new byte[1024];
int count = worker.Receive(buf);
string context = Encoding.GetEncoding("gb2312").GetString(buf,0,count);
Console.WriteLine(context);
worker.Send(Encoding.GetEncoding("gb2312").GetBytes("收到"));
}
catch
{
throw;
}
Console.Read();
}
实现客户端:
主要代码:
static void Main(string[] args)
{
Console.WriteLine("客户端");
Socket s = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"),20000);
//连接服务器
s.Connect(iep);
//发送信息
string context ="Hello World!";
s.Send(Encoding.GetEncoding("gb2312").GetByte(context));
try
{
byte[] buf = new byte[1024];
int count = s.Receive(buf);
string aa = Encoding.GetEncoding("gb2312").GetString(buf,0,count);
Console.WriteLine(aa);
}
catch
{}
Console.Read();
}