C#-Socket程式設計-TCP
伺服器端
- using System;
- using System.Collections;
- using System.Net.Sockets; //名稱空間
- using System.Net;
- using System.Text;
- namespace SocketServer
- {
- //思路:1.建立一個Socket
- // 2.繫結一個ip和埠
- // 3.開始監聽客戶端的連線請求
- // 4.傳送、接收訊息
- class Program
- {
- static void Main(string[] args)
- {
- //1. 定址方案 套接字型別 協議型別
- Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- //2.
- IPAddress ipaddress = IPAddress.Parse("127.0.0.1");
-
EndPoint endpoint = new IPEndPoint(ipaddress, 5000); //向作業系統申請一份可用的ip和埠號
- tcpServer.Bind(endpoint);
- //3.
- tcpServer.Listen(100); //能同時接收100個客戶端的請求
- Console.WriteLine("伺服器啟動完成");
- Socket clientSocket = tcpServer.Accept(); //暫停當前執行緒,直到一個客戶端連線過來,返回Socket物件
- Console.WriteLine("接收到客戶端的連線請求");
- //4.
-
string message = "Hello Client";
- var data = Encoding.UTF8.GetBytes(message); //將字串轉成位元組陣列
- clientSocket.Send(data);
- Console.WriteLine("我向客戶端傳送了一條訊息:"+message);
- byte[] data2 = new byte[1024]; //存放陣列的容器
- int length = clientSocket.Receive(data2);
- string message2 = Encoding.UTF8.GetString(data2, 0, length);
- Console.WriteLine("我接收到客戶端發來的訊息:"+ message2);
- }
客戶端
- using UnityEngine;
- using System.Collections;
- using System.Net.Sockets; //名稱空間
- using System.Net;
- using System.Text;
- namespace SocketClient
- {
- //思路:1.建立一個Socket
- // 2.建立連線請求
- // 3.接收訊息
- // 4.傳送訊息
- class Program
- {
- static void Main(string[] args)
- {
- private Socket tcpClient;
- private string serverIP = "127.0.0.1";
- private int serverPort = 5000;
- }
- void Start()
- {
- //1.
- tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- //2.
- IPAddress ipaddress = IPAddress.Parse(serverIP);
- EndPoint endpoint = new IPEndPoint(ipaddress, serverPort);
- tcpClient.Connect(endPoint);
- Debug.Log("請求伺服器連線");
- //3.
- byte[] data = new byte[1024];
- int length = tcpClient.Receive(data);
- var message = Encoding.UTF8.GetString(data,0,length);
- Debug.Log("我接收到伺服器發來的訊息:"+ message);
- //4.
- string message2 = "這是我向伺服器傳送的訊息";
- tcpClient.Send(Encoding.UTF8.GetBytes(message3));
- Debug.Log("我向伺服器傳送訊息:"+message2);
- }
【附錄】
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協議分配給本地主機的網路地址,就向兩個程序要通