這篇部落格主要包含兩個部分的內容:乙個是服務端的**,乙個是客戶端的**。
一、服務端類
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.net.sockets;
using system.net;
namespace
tcpserver
catch(exception e)}}
listener.stop();}}
}
服務端**說明:
1、埠號,即告訴客戶端我哪間屋子是敞開的。關於這句**,還是要多說幾句的:
tcplistener listener =new tcplistener(ipaddress.any, portnum);
ipaddress.any是代表任意位址的意思,即:0.0.0.0
ipaddresss.loop是代表本機,也就是:127.0.0.1
所以這個建構函式的意思是,要傳遞乙個ip位址,以及以埠號。早期的c#提供的api,只需要埠號,但是已經標記過時了。所以,你這裡既可以填寫本機位址,也可以填寫某個特定的ip。比如192.168.1.123等等,如果是字串的話,那麼則需要用下面的函式轉換一下。
tcplistener listener = new tcplistener(ipaddress.parse("191.168.1.123"),portnum);
這樣就可以了。
2、然後開始監聽:
3、迴圈監聽是否有客戶端連線進來。故有乙個while死迴圈。
4、當有乙個客戶端連線的時候,則後去流,然後向管道中寫入當前系統時間,緊接著就關閉連線。
二、客戶端
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.net.sockets;
using system.text;
namespace tcpclient
catch(exception e)}}
}
執行說明:
1、先執行服務端,然後執行客戶端,你會發現客戶端程式的控制台視窗,收到了,乙個日期字串。
擴充套件:
關於windows下的埠監聽檢視,我們可以使用如下的命令:netstat -ano命令。
C Socket教程詳解一 同步TCP程式設計
非同步tcp程式設計傳送門 tcplistener類,伺服器監聽類,用於監聽和連線客戶端,該類重要方法如下 構造方法 public tcplistener ipendpoint iep public tcplistener ipaddress localaddress,int port 第乙個建構函...
解析(一) 同步 非同步
目錄 同步 非同步 注 參考 問題 一 請說明一下執行緒中的同步和非同步有何異同?並且請舉例說明在什麼情況下會使用到同步和非同步?兩個程序間的訊息隱含著某種程式的同步 只有當乙個程序傳送出訊息之後,接受者才能接收訊息。且當乙個程序產生了send或者receive原語後,需要確定會發生什麼。即發出乙個...
TCP通訊(二) 非同步連線
本篇部落格主要講述的非同步的問題。首先明確非同步到底是什麼東東,非同步就是發起乙個指令,並不需要一直等待指令的執行結果,而是可以繼續忙其他的事情。一 非同步連線 服務端 using system using system.collections.generic using system.linq u...