- 实现TCP通信需要实例化TcpListener对象和TcpClient对象。
- 首先实例化TcpListener对象并调用Start(),使其监听指定的IP地址和端口号,等待连接;然后实例化TcpClient对象并调用Connect(),使其连接指定的IP地址和端口号,完成连接。
- TcpListener对象接收和发送数据是利用Socket对象,分别调用Receive()和Send();TcpClient对象接收和发送数据是利用NetworkStream对象,分别调用Read()和Write()。
- 注意!接收和发送数据都是依靠byte数组,需要设置合适的数组长度。
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
namespace _07
{
class Program
{
public static IPEndPoint iPEndPoint;
public static Socket listenerSocket;
public static NetworkStream clientStream;
static void Main(string[] args)
{
iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345);
new Thread(new ThreadStart(CreateListener)).Start();
new Thread(new ThreadStart(CreateClient)).Start();
while (true)
{
string message = Console.ReadLine();
if (message.Contains("(Listener)"))
{
SendListenerMessage(message);
}
if (message.Contains("(Client)"))
{
SendClientMessage(message);
}
}
}
/// <summary>
/// 创建TcpListener
/// </summary>
public static void CreateListener()
{
TcpListener listener = new TcpListener(iPEndPoint);
listener.Start();
listenerSocket = listener.AcceptSocket();
byte[] bytes = new byte[1024];
while (true)
{
int count = listenerSocket.Receive(bytes);
Console.WriteLine($"This is Listener : {Encoding.UTF8.GetString(bytes, 0, count)}");
Console.WriteLine();
}
}
/// <summary>
/// 创建TcpClient
/// </summary>
public static void CreateClient()
{
TcpClient client = new TcpClient();
client.Connect(iPEndPoint);
clientStream = client.GetStream();
byte[] bytes = new byte[1024];
while (true)
{
int count = clientStream.Read(bytes);
Console.WriteLine($"This is Client : {Encoding.UTF8.GetString(bytes, 0, count)}");
Console.WriteLine();
}
}
/// <summary>
/// 发送监听者消息
/// </summary>
/// <param name="message"></param>
public static void SendListenerMessage(string message)
{
listenerSocket.Send(Encoding.UTF8.GetBytes(message));
}
/// <summary>
/// 发送客户端消息
/// </summary>
/// <param name="message"></param>
public static void SendClientMessage(string message)
{
clientStream.Write(Encoding.UTF8.GetBytes(message));
}
}
}

版权声明:本文为qq_44021223原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。