您的位置:首页 > 理论基础 > 计算机网络

Socket编程—TcpListener和TcpClient的使用

2016-03-31 23:31 447 查看
前面的几篇主要是讲使用Socket类进行网络编程。今天学习了一下TcpListener和TcpClient类的使用,这是对Socket进行了封装,这两个类会自己创建Socket对象。

使用起来比直接使用Socket要方便一点。不多说了,直接上代码:

服务器端:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace tcplistener
{
class Program
{
static void Main(string[] args)
{
//[1]TcpListener对Socket进行了封装,这各类会自己创建Socket对象
TcpListener tcpListener = new TcpListener(IPAddress.Parse("172.25.14.165"), 7788);
//[2]开始进行监听
tcpListener.Start();

//[3]等待客户端连接过来
TcpClient client = tcpListener.AcceptTcpClient();
//[4]取得从客户端发来的数据
NetworkStream stream = client.GetStream();//这是一个网络流,从这个网络流可以去的从客户端发来的数据

while (true)
{
byte[] data = new byte[1024];
/*
* 0表示 从数组的哪个索引开始读取数据
* 1024 表示最大的读取数
* */
int length = stream.Read(data, 0, 1024);
string message = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine("收到了信息:" + message);
}

stream.Close();
client.Close();
tcpListener.Stop();//停止监听
Console.ReadKey();
}
}
}


客户端:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace TcpClient_客户端
{
class Program
{
static void Main(string[] args)
{
TcpClient tcpClient = new TcpClient("172.25.14.165", 7788);
NetworkStream stream = tcpClient.GetStream();//通过网络流进行数据的交换
while (true)
{
//read来读取数据,write用来写入数据就是发送数据
string message = Console.ReadLine();
byte[] data = new byte[1024];
data = Encoding.UTF8.GetBytes(message);
stream.Write(data, 0, data.Length);
}
stream.Close();
tcpClient.Close();
Console.ReadKey();
}
}
}


看起来是不是比直接使用Socket要简单点。这就是面向对象封装特性的魅力所在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: