作者:king1994 | 来源:互联网 | 2023-08-18 01:21
本文由编程笔记#小编为大家整理,主要介绍了利用TcpClient,简单的tcp消息收发相关的知识,希望对你有一定的参考价值。TcpClient和以前学过的对象,相对关系示意图如
本文由编程笔记#小编为大家整理,主要介绍了利用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");
}
}
}
运行效果: