tcpclient和socket的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tcpclient和socket的区别相关的知识,希望对你有一定的参考价值。

参考技术A TcpClient是在Socket的基础上运行的。
Socket完全可以涵盖TcpClient,只不过TcpClient为了简化一部分Socket的功能。
Socket支持TCP,UDP,IP包,Stream,Dgram等诸多类型
而TcpClient只支持TCP和Stream
如果你还有许多不懂的话,推荐你学NET网络编程前,好好学一学TCP/IP或OSI网络模型,这也是一门学科,不是简单几句话就可以解释清楚的,否则越解释你越糊涂。本回答被提问者和网友采纳

利用TcpClient,简单的tcp消息收发

TcpClient和以前学过的对象,相对关系示意图如下:

技术图片

 

借助有连接的特性,它封装了很多需要一起使用的对象,用起来也更加方便。

作为服务端时,它一般配合TcpListener使用。

由监听者创建的所有客户端,都使用与监听者相同的ipendpoint。(实现上,可以理解为不同的socket指向相同的ipendpoint)

例:

说明:服务端有一个监听者(TcpListener),接收到连接请求后,建立连接给一个客户端(TcpClient)。

利用流读取器(StreamReader)获取传递过来的信息并显示。

客户端建立一个客户端对象(TcpClient),连接服务端后就可以利用流写入对象(StreamWriter)发送数据。

代码如下:

服务端:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Net;
 7 using System.Net.Sockets;
 8 using System.IO;
 9 
10 namespace ConsoleApp1
11 {
12     class Program
13     {
14         static void Main(string[] args)
15         {
16             TcpListener listener = new TcpListener(IPAddress.Any, 9000);
17             TcpClient client = new TcpClient();
18             StreamReader sr;
19             string msg;
20             listener.Start();
21             client = listener.AcceptTcpClient();
22             sr = new StreamReader(client.GetStream());
23             do
24             {
25                 msg = sr.ReadLine();
26                 Console.WriteLine(msg);
27             } while (msg.ToLower()!="exit");
28         }
29     }
30 }

客户端:

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

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpClient tcp = new TcpClient();
            string msg;
            IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9000);
            tcp.Connect(iPEndPoint);
            StreamWriter sw = new StreamWriter(tcp.GetStream());
            do
            {
                msg = Console.ReadLine();
                sw.WriteLine(msg);
                sw.Flush();
            } while (msg.ToLower()!="exit");
        }
    }
}

运行效果:

技术图片

 

以上是关于tcpclient和socket的区别的主要内容,如果未能解决你的问题,请参考以下文章

网络编程中,使用Socket和TcpClient有啥区别

网络编程中,使用Socket和TcpClient有啥区别

TCP调试助手与TCPSocket区别

处理异步时的 TcpClient 与 Socket

直接在 Socket 上使用 TcpClient 有啥好处?

C# Tcp协议收发数据(TCPClient发,Socket收)