C#實現一個簡易的 Socket/TCP 服務器與客戶端
該“Socket / 套接字”示例為同步的,如果你需要學習Socket,那么學
習同步方式是很有必要的,異步是從同步過渡過去的。首先你需要
創建兩個控制臺項目 一個為Server / 服務器 另一個為Client / 客戶端
服務器:
namespace Server
{
using System;
using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Text;class Program { static void Main(string[] args) { // 物質女的服務器 Console.Title = "Server of pid:" + Process.GetCurrentProcess().Id; int port = 91; // 服務器端口號 int backlog = 0; // 臨時掛起的客戶端連接的最大數量 IPAddress ip = IPAddress.Parse("192.168.1.5"); // 服務器IPv4地址 Socket sock = new Socket( // 構建一個套接字服務 AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ); sock.Bind(new IPEndPoint(ip, port)); // 綁定服務器地址 sock.Listen(backlog); // 開始偵聽 byte[] buffer = new byte[512]; // 字節緩沖區 while (true) // 循環接收請求 { Socket client = sock.Accept(); // 為客戶端建立服務連接 int offset = client.Receive(buffer, buffer.Length, SocketFlags.None); // 接收客戶端傳入的數據 Console.WriteLine(Encoding.Default.GetString(buffer, 0, offset)); // 輸出客戶端傳入的數據 // 服務器回應客戶端 client.Send(Encoding.Default.GetBytes("服務器:馬上和你要分手"), SocketFlags.None); // 再見 client.Close(); } } } } </pre>
客戶端:namespace Client
{
using System;
using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Text;class Program { static void Main(string[] args) { Console.Title = "Client of pid:" + Process.GetCurrentProcess().Id; int port = 91; // 服務器端口號 IPAddress ip = IPAddress.Parse("192.168.1.5"); // 服務器地址 Socket sock = new Socket( // 構建一個套接字服務 AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ); try { sock.Connect(new IPEndPoint(ip, port)); // 連接服務器 sock.Send(Encoding.Default.GetBytes("客戶端:我們一起闖碼頭")); // 發送數據到服務器 byte[] buffer = new byte[512]; // 接收緩沖區 int offset = sock.Receive(buffer, buffer.Length, SocketFlags.None); // 接收服務器傳入的數據 Console.WriteLine(Encoding.Default.GetString(buffer, 0, offset)); // 輸出服務器傳入的數據 sock.Close(); // 再見 } catch(SocketException e) { Console.WriteLine(e.Message); // 輸出發生錯誤的信息 } Console.ReadKey(false); } }
} </pre>
服務器與客戶端兩份代碼寫好并測試 首先你需要啟動服務器
然后再運行客戶端
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!