using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace TCPSocketServer
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("服務(wù)端已經(jīng)啟動(dòng)");
// 服務(wù)器端Socket
// 1. 創(chuàng)建了一個(gè) Socket連接對(duì)象? 參數(shù):(1、尋址方案, 2、Socket數(shù)據(jù)傳輸格式, 3、Socket數(shù)據(jù)傳輸協(xié)議)
Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 包裝一個(gè)IP地址。? 通過byte數(shù)組來傳遞。? 每一個(gè)元素,代表IP地址的一段??偣?段
IPAddress address = new IPAddress(new byte[]{192,168,1,85});
// ipPoint 里面就包含了 IP地址信息和端口信息
IPEndPoint ipPoint = new IPEndPoint(address,12358);
//2. 綁定IP地址和端口
tcpServer.Bind(ipPoint);
//3. 監(jiān)聽,或者說允許多少個(gè)客戶端訪問
tcpServer.Listen(25);
//4. 等待客戶端的連接,會(huì)卡住當(dāng)前線程, 如果有客戶端連接上,那么就返回這個(gè)客戶端的信息。 所以返回值類型是Socket
Socket clientSocket = tcpServer.Accept();
string sendMessage = "Hello Welcome Connect!";
// 5. 給連接上的客戶端發(fā)送消息。 發(fā)送的內(nèi)容要求是byte ,所以我們要對(duì)傳遞的字符串做一個(gè)轉(zhuǎn)換
clientSocket.Send(Encoding.UTF8.GetBytes(sendMessage));
// 6. 接收客戶端的消息
byte[] reciveData = new byte[1024];
int dataLength = clientSocket.Receive(reciveData);
//把byte數(shù)組中的數(shù)據(jù)轉(zhuǎn)換成字符串
string receiveString = Encoding.UTF8.GetString(reciveData, 0, dataLength);
Console.WriteLine("接收到客戶端的消息" + receiveString);
Console.WriteLine("程序執(zhí)行完畢");
Console.ReadKey();
}
}
}