91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 330KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-26
  • 語言: C#
  • 標簽: SOCKET源碼??

資源簡介

首先要理解基本的原理,2臺電腦間實現TCP通訊,首先要建立起連接,在這里要提到服務器端與客戶端,兩個的區別通俗講就是主動與被動的關系,兩個人對話,肯定是先有人先發起會話,要不然誰都不講,談什么話題,呵呵!一樣,TCPIP下建立連接首先要有一個服務器,它是被動的,它只能等待別人跟它建立連接,自己不會去主動連接,那客戶端如何去連接它呢,這里提到2個東西,IP地址和端口號,通俗來講就是你去拜訪某人,知道了他的地址是一號大街2號樓,這個是IP地址,那么1號樓這么多門牌號怎么區分,嗯!門牌號就是端口(這里提到一點,我們訪問網頁的時候也是IP地址和端口號,IE默認的端口號是80),一個服務器可以接受多個客戶端的連接,但是一個客戶端只能連接一臺服務器,在連接后,服務器自動劃分內存區域以分配各個客戶端的通訊,那么,那么多的客戶端服務器如何區分,你可能會說,根據IP么,不是很完整,很簡單的例子,你一臺計算機開3個QQ,服務器怎么區分?所以準確的說是IP和端口號,但是客戶端的端口號不是由你自己定的,是由計算機自動分配的,要不然就出現端口沖突了,說的這么多,看下面的這張圖就簡單明了了。 在上面這張圖中,你可以理解為程序A和程序B是2個SOCKET程序,服務器端程序A設置端口為81,已接受到3個客戶端的連接,計算機C開了2個程序,分別連接到E和D,而他的端口是計算機自動分配的,連接到E的端口為789,連接到D的為790。 了解了TCPIP通訊的基本結構后,接下來講解建立的流程,首先聲明一下我用的開發環境是Visual Studio2008版的,語言C#,組件System.Net.Sockets,流程的建立包括服務器端的建立和客戶端的建立,如圖所示: 二、實現: 1.客戶端: 第一步,要創建一個客戶端對象TcpClient(命名空間在System.Net.Sockets),接著,調用對象下的方法BeginConnect進行嘗試連接,入口參數有4個,address(目標IP地址),port(目標端口號),requestCallback(連接成功后的返調函數),state(傳遞參數,是一個對象,隨便什么都行,我建議是將TcpClient自己傳遞過去),調用完畢這個函數,系統將進行嘗試連接服務器。 第二步,在第一步講過一個入口參數requestCallback(連接成功后的返調函數),比如我們定義一個函數void Connected(IAsyncResult result),在連接服務器成功后,系統會調用此函數,在函數里,我們要獲取到系統分配的數據流傳輸對象(NetworkStream),這個對象是用來處理客戶端與服務器端數據傳輸的,此對象由TcpClient獲得,在第一步講過入口參數state,如果我們傳遞了TcpClient進去,那么,在函數里我們可以根據入口參數state獲得,將其進行強制轉換TcpClient tcpclt = (TcpClient)result.AsyncState,接著獲取數據流傳輸對象NetworkStream ns = tcpclt.GetStream(),此對象我建議弄成全局變量,以便于其他函數調用,接著我們將掛起數據接收等待,調用ns下的方法BeginRead,入口參數有5個,buff(數據緩沖),offset(緩沖起始序號),size(緩沖長度),callback(接收到數據后的返調函數),state(傳遞參數,一樣,隨便什么都可以,建議將buff傳遞過去),調用完畢函數后,就可以進行數據接收等待了,在這里因為已經創建了NetworkStream對象,所以也可以進行向服務器發送數據的操作了,調用ns下的方法Write就可以向服務器發送數據了,入口參數3個,buff(數據緩沖),offset(緩沖起始序號),size(緩沖長度)。 第三步,在第二步講過調用了BeginRead函數時的一個入口參數callback(接收到數據后的返調函數),比如我們定義了一個函數void DataRec(IAsyncResult result),在服務器向客戶端發送數據后,系統會調用此函數,在函數里我們要獲得數據流(byte數組),在上一步講解BeginRead函數的時候還有一個入口參數state,如果我們傳遞了buff進去,那么,在這里我們要強制轉換成byte[]類型byte[] data= (byte[])result.AsyncState,轉換完畢后,我們還要獲取緩沖區的大小int length = ns.EndRead(result),ns為上一步創建的NetworkStream全局對象,接著我們就可以對數據進行處理了,如果獲取的length為0表示客戶

資源截圖

代碼片段和文件信息

using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Threading.Tasks;

namespace?Sever
{
????class?Program
????{
????????static?void?Main(string[]?args)
????????{
????????????TSever?tServer?=?new?TSever(9001);
????????????Console.ReadLine();
????????}
????}
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-05-13?22:58??TcpIpDemo\
?????目錄???????????0??2018-05-13?22:58??TcpIpDemo\.vs\
?????目錄???????????0??2018-05-13?22:58??TcpIpDemo\.vs\TcpIpDemo\
?????目錄???????????0??2018-05-13?22:58??TcpIpDemo\.vs\TcpIpDemo\v15\
?????文件???????92672??2018-05-20?14:39??TcpIpDemo\.vs\TcpIpDemo\v15\.suo
?????目錄???????????0??2018-05-13?22:58??TcpIpDemo\.vs\TcpIpDemo\v15\Server\
?????目錄???????????0??2018-05-20?14:39??TcpIpDemo\.vs\TcpIpDemo\v15\Server\sqlite3\
?????文件???????????0??2018-05-13?22:58??TcpIpDemo\.vs\TcpIpDemo\v15\Server\sqlite3\db.lock
?????文件??????581632??2018-05-13?23:49??TcpIpDemo\.vs\TcpIpDemo\v15\Server\sqlite3\storage.ide
?????目錄???????????0??2018-05-13?23:35??TcpIpDemo\Server\
?????文件?????????189??2018-04-21?10:22??TcpIpDemo\Server\App.config
?????文件?????????326??2018-04-21?10:31??TcpIpDemo\Server\Program.cs
?????目錄???????????0??2018-05-13?21:49??TcpIpDemo\Server\Properties\
?????文件????????1336??2018-04-21?10:22??TcpIpDemo\Server\Properties\AssemblyInfo.cs
?????文件????????2733??2018-04-21?12:31??TcpIpDemo\Server\Server.csproj
?????文件????????3737??2018-05-13?23:35??TcpIpDemo\Server\TServer.cs
?????目錄???????????0??2018-05-13?21:49??TcpIpDemo\Server\bin\
?????目錄???????????0??2018-05-13?23:41??TcpIpDemo\Server\bin\Debug\
?????文件????????7168??2018-05-13?23:41??TcpIpDemo\Server\bin\Debug\Server.exe
?????文件?????????189??2018-04-21?10:22??TcpIpDemo\Server\bin\Debug\Server.exe.config
?????文件???????15872??2018-05-13?23:41??TcpIpDemo\Server\bin\Debug\Server.pdb
?????文件???????23168??2018-05-11?09:24??TcpIpDemo\Server\bin\Debug\Server.vshost.exe
?????文件?????????189??2018-04-21?10:22??TcpIpDemo\Server\bin\Debug\Server.vshost.exe.config
?????文件?????????490??2015-07-10?19:01??TcpIpDemo\Server\bin\Debug\Server.vshost.exe.manifest
?????目錄???????????0??2018-05-13?21:49??TcpIpDemo\Server\obj\
?????目錄???????????0??2018-05-13?23:41??TcpIpDemo\Server\obj\Debug\
?????文件????????6690??2018-05-13?23:41??TcpIpDemo\Server\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
?????文件??????????42??2018-05-13?23:41??TcpIpDemo\Server\obj\Debug\Server.csproj.CoreCompileInputs.cache
?????文件?????????905??2018-05-13?23:41??TcpIpDemo\Server\obj\Debug\Server.csproj.FileListAbsolute.txt
?????文件????????9132??2018-05-13?23:41??TcpIpDemo\Server\obj\Debug\Server.csprojResolveAssemblyReference.cache
?????文件????????7168??2018-05-13?23:41??TcpIpDemo\Server\obj\Debug\Server.exe
............此處省略73個文件信息

評論

共有 條評論