- 实现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);
}
}
}
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();
}
}
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();
}
}
public static void SendListenerMessage(string message)
{
listenerSocket.Send(Encoding.UTF8.GetBytes(message));
}
public static void SendClientMessage(string message)
{
clientStream.Write(Encoding.UTF8.GetBytes(message));
}
}
}
