伺服器端:
using System.Net;
using System.Net.Sockets;
//監聽所有可以達到本機的IP位置;9000port
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 9000);
TcpListener listener = new TcpListener(ipEndPoint);
listener.Start();
//無窮迴圈等待客戶端
while (true)
{
TcpClient tcpClient = listener.AcceptTcpClient();
//連上了就開始處理
if (tcpClient.Connected)
{
//資料流指向tcpClient(客戶端)傳來的資料
NetworkStream networkStream = tcpClient.GetStream();
//傳進來是位元組
byte[] receiveByte = new byte[tcpClient.ReceiveBufferSize];
// ReceiveBufferSize好像是固定數值,真正讀到的長度Read()會回傳
int resdByteLength =
networkStream.Read(receiveByte, 0, tcpClient.ReceiveBufferSize);
//編碼成看得懂的字串
string receiveString =
Encoding.Default.GetString(receiveByte, 0, resdByteLength);
//在Connected區塊裡都是連接狀態,可以再發訊息給客戶端,
//也是利用網路資料流的方式,離開後又回到無窮迴圈等下一次客戶端連線
}
}
發送端:
using System.Net;
using System.Net.Sockets;
//伺服器端位置
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 9000);
TcpClient tcpClient = new TcpClient();
//連接伺服器
tcpClient.Connect(ipEndPoint);
if(tcpClient.Connected)
{
//編碼成byte讓網路流傳遞
string sendString = "這是要發送的訊息";
byte[] sendByte = Encoding.Default.GetBytes(sendString);
NetworkStream networkStream = tcpClient.GetStream();
networkStream.Write(sendByte, 0, sendByte.Length);
}
沒有留言:
張貼留言