1. 程式人生 > >C#-Socket程式設計-TCP

C#-Socket程式設計-TCP

伺服器端

  1. using System;
  2. using System.Collections;
  3. using System.Net.Sockets;   //名稱空間
  4. using System.Net;
  5. using System.Text;
  6. namespace SocketServer
  7. {
  8.        //思路:1.建立一個Socket
  9.        //     2.繫結一個ip和埠
  10.        //     3.開始監聽客戶端的連線請求
  11.        //     4.傳送、接收訊息
  12.    class Program
  13.    {
  14.       static void Main(string[] args)
  15.       {
  16.         //1.                              定址方案               套接字型別           協議型別
  17.      Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  18.        //2.
  19.        IPAddress ipaddress = IPAddress.Parse("127.0.0.1");
  20.        EndPoint  endpoint  = new IPEndPoint(ipaddress, 5000);     //向作業系統申請一份可用的ip和埠號
  21.        tcpServer.Bind(endpoint);
  22.        //3.
  23.        tcpServer.Listen(100);              //能同時接收100個客戶端的請求
  24.        Console.WriteLine("伺服器啟動完成");
  25.        Socket clientSocket = tcpServer.Accept();  //暫停當前執行緒,直到一個客戶端連線過來,返回Socket物件 
  26.        Console.WriteLine("接收到客戶端的連線請求");
  27.         //4.
  28.         string message = "Hello Client";
  29.         var data = Encoding.UTF8.GetBytes(message);   //將字串轉成位元組陣列
  30.         clientSocket.Send(data);
  31.         Console.WriteLine("我向客戶端傳送了一條訊息:"+message);
  32.         byte[] data2 = new byte[1024];            //存放陣列的容器
  33.         int length = clientSocket.Receive(data2);
  34.         string message2 = Encoding.UTF8.GetString(data2, 0, length);
  35.         Console.WriteLine("我接收到客戶端發來的訊息:"+ message2);
  36.  }

客戶端
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Net.Sockets;   //名稱空間
  4. using System.Net;
  5. using System.Text;
  6. namespace SocketClient
  7. {
  8.        //思路:1.建立一個Socket
  9.        //     2.建立連線請求
  10.        //     3.接收訊息
  11.        //     4.傳送訊息
  12.    class Program
  13.    {
  14.       static void Main(string[] args)
  15.       {
  16.         private Socket tcpClient;
  17.         private string serverIP = "127.0.0.1";
  18.         private int serverPort = 5000;
  19.       }
  20.      void Start()
  21.      {
  22.         //1.
  23.      tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  24.        //2.
  25.       IPAddress ipaddress = IPAddress.Parse(serverIP);
  26.       EndPoint  endpoint = new IPEndPoint(ipaddress, serverPort);
  27.       tcpClient.Connect(endPoint);
  28.       Debug.Log("請求伺服器連線");
  29.        //3.
  30.        byte[] data = new byte[1024];
  31.        int length = tcpClient.Receive(data);
  32.        var message = Encoding.UTF8.GetString(data,0,length);
  33.        Debug.Log("我接收到伺服器發來的訊息:"+ message);
  34.        //4.
  35.        string message2 = "這是我向伺服器傳送的訊息";
  36.        tcpClient.Send(Encoding.UTF8.GetBytes(message3));
  37.        Debug.Log("我向伺服器傳送訊息:"+message2);
  38.    }

【附錄】

1. 相關類

    IPAddress類:包含了一個IP地址

    IPEndPoint類:包含了一對IP地址和埠號

2. 相關方法

    Socket():建立一個Socket

    Bind():繫結一個本地的IP和埠號(IPEndPoint)

    Listen():讓 Socket偵聽傳入的連線嘗試,並指定偵聽佇列容量

    Connect():初始化與另一個Socket的連線

    Accept():接收連線並返回一個新的socket

    Send():輸出資料到Socket

    Receive():從Socket中讀取資料

    Close():關閉Socket

相關推薦

C#-Socket程式設計-TCP

伺服器端 using System; using System.Collections; using System.Net.Sockets;   //名稱空間 using System.Net

簡單的 C++ SOCKET程式設計 ---基於TCP/IP協議(轉)

server端: #include <WINSOCK2.H> #include <stdio.h> #pragma comment(lib,"ws2_32.lib") void main() { //建立套接字 WORD myVersion

C# Socket程式設計(5)使用TCP Socket

TCP 協議(Transmission Control Protocol,傳輸控制協議)是TCP/IP體系中面向連線(connection oriented)的傳輸層(transport layer),TCP協議能夠檢測和恢復IP層提供的主機到主機的通道中可能發生的報文丟

C# socket 程式設計之 accept() 函式返回值解析

accept() 函式會返回一個新的套接字,這個新的套接字在伺服器端與客戶端進行通訊。 伺服器端的繫結監聽是一個套接字,與客戶端通訊的是另一個套接字(accept函式返回的套接字,注意這裡不是返回客戶端的套接字,返回的套接字是新建立在伺服器上的,與客戶端收發訊息用的) 下面這段程式碼,是

C#.網路程式設計 Tcp基礎(二) TCP組包、粘包、拆包的原理

一、TCP粘包,拆包及解決方法    轉https://blog.csdn.net/scythe666/article/details/51996268 以下是轉發的部分內容          我們都知道TCP屬於傳

[Visual Studio C++][Socket程式設計] WSAAsyncSelect()函式使用講解

一.前言                WSAAsyncSelect()函式允許應用程式以Windows訊息的方式接收網路事件通知。 二.講解      1.函式的功能

[Visual Studio C++][Socket程式設計] WSAGetLastError()函式使用講解

一.前言                WSAGetLastError()函式為我們進行socket程式設計時需要用到的一個函式。 二.講解      1.函式的功能

[Visual Studio C++][Socket程式設計] Socket通訊原理詳細講解

(本文參考:https://www.cnblogs.com/wangcq/p/3520400.html  在原文的基礎上進行了擴充。)    對TCP/IP、UDP、Socket程式設計這些詞你不會很陌生吧?隨著網路技術的發展,這些詞充斥著我們的耳朵。那麼我想問

Socket程式設計-TCP實現簡單聊天程式

在System.net.Sockets的名稱空間中,TcpListener類與TcpClient類是兩個專門用於TCP協議程式設計的類,它們封裝了底層的套接字並分別提供了用Socket進行同步和非同步通訊的方法,降低了TCP應用程式設計的難度。 在網路應用程式設計中,利用TCP協議編寫的程式

C++ socket程式設計-轉載

轉自:https://www.cnblogs.com/L-hq815/archive/2012/07/09/2583043.html 若有違規請聯絡我刪除。   介紹 Socket程式設計讓你沮喪嗎?從man pages中很難得到有用的資訊嗎?你想跟上時代去編Internet相關的程式,但是為

linux下C/C++ socket程式設計

簡單的linux下socket程式設計,分別基於TCP和UDP協議實現的簡單程式 linux下socket程式設計可以概括為以下幾個函式的運用: socket() bind() listen() connect() ac

C# Socket程式設計 通過執行緒方式的非同步

前言 TCPSocket通訊 Server端 建立終端(指定ip和埠號) 建立服務端socket 指定協議TCP, 資料為流方式,用IPV4, socket繫結終端 開始監聽(此時會發生阻塞,如果沒有監聽到,就不會向下執行) 接受到一個連線的請求時,會

C-socket程式設計-多程序版併發伺服器

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <sys/socket.h

Linux-C-Socket程式設計

 本文內容提到的套接字都是Berkely socket. 實用套接字的四個步驟: 1 分配空間和初始化 2 連線 3 傳送資料 4 關閉 具體演算法: 伺服器端: #include <sys/socket.h> #include <netin

C# Socket程式設計之繫結IP與埠

 Socket serverSocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);  //獲取Socket     &

C++ Socket程式設計(一) 概述

學習Socket程式設計時,整理的知識點。 套接字的概念及分類 在網路中,要全域性的標識一個參與通訊的程序,需要三元組:協議,IP地址以及埠號。要描述兩個應用程序之間的端到端的通訊關聯需要五元組:協議,信源主機IP,信源應用程序埠,信宿主機IP,信宿應用

C#網路程式設計TCP通訊例項程式簡單設計

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

Socket程式設計------TCP檔案傳輸(文件、聲音、圖片、視訊和壓縮包等)

本程式是基於TCP穩定傳輸的檔案傳輸,可以相容任何型別任何格式的檔案傳輸。 ☆基本思路(客戶端) 客戶端需要明確伺服器的ip地址以及埠,這樣才可以去試著建立連線,如果連線失敗,會出現異常。 連線成功,說明客戶端與服務端建立了通道,那麼通過IO流就可以進行資料的傳輸,而So

C# Socket程式設計 同步以及非同步通訊

套接字簡介:套接字最早是Unix的,window是借鑑過來的。TCP/IP協議族提供三種套接字:流式、資料報式、原始套接字。其中原始套接字允許對底層協議直接訪問,一般用於檢驗新協議或者新裝置問題,很少使用。 套接字程式設計原理:延續檔案作用思想,開啟-讀寫-關閉的模式。

C++ socket程式設計基礎一(概念和常用API)

SOCKET一種程序通訊的方式,簡言之就是呼叫這個網路庫的一些API函式就能實現分佈在不同主機的相關程序之間的資料交換. ·SOCKET幾個定義概念 一、是IP地址: IP Address我想很容易理解,就是依照TCP/IP協議分配給本地主機的網路地址,就向兩個程序要通