C Socket教程詳解一 同步TCP程式設計

2021-08-21 13:21:51 字數 2380 閱讀 2284

非同步tcp程式設計傳送門:

tcplistener類,伺服器監聽類,用於監聽和連線客戶端,該類重要方法如下:

構造方法:

public tcplistener(ipendpoint iep);

public tcplistener(ipaddress localaddress,int port);

第乙個建構函式是使用ipendpont物件初始化tcplistener類。

第二個建構函式是直接指定伺服器監聽位址和埠。

start方法,用於啟動伺服器監聽,該方法具有倆個過載。

public void start();

public void start(int num);

第乙個直接啟動伺服器監聽,第二個是指定能連入伺服器的最大客戶端數目。

stop方法,用於伺服器停止監聽。

public void stop();

acceptsocket和accpettcpclient方法。都是用於獲取並返回乙個物件,用於向客戶端傳送或接收訊息。

public socket acceptsocket();獲取並返回乙個socket物件

public tcpclient accepttcpclient();獲取並返回乙個tcpclient物件

using system;

using system.collections.generic;

using system.io;

using system.linq;

using system.net;

using system.net.sockets;

using system.text;

using system.threading;

using system.threading.tasks;

namespace server

catch(socketexception e) //處理啟動失敗異常

console.writeline("伺服器啟動成功");

console.writeline("等待客戶端連入中...");

//開啟乙個迴圈,用於接受連入的客戶端

while(true)

catch}}

/// /// 用於接受客戶端請求,並回應客戶端

///

///

private static void client(object tcpclient)}}

tcpclient類,用於連線伺服器。

它有4個構造方法。我們這裡使用預設構造方法:

public tcpclient();

connect有3個過載方法,我們也只介紹乙個。

public void connect(ipaddress ip,int port);用指定位址ip連線伺服器。

getstream方法

public networkstream getstream();用於獲取networkstream物件來收發資訊

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using system.net;

using system.net.sockets;

using system.io;

namespace client

catch

//得到用於收發資訊的物件

networkstream ns = client.getstream();

binaryreader br = new binaryreader(ns);

binarywriter bw = new binarywriter(ns);

//傳送並列印傳送的資訊

bw.write("我想要乙個蘋果");

console.writeline("客戶端傳送請求:我想要乙個蘋果");

//接受並列印接受到的資訊

console.writeline("伺服器回應:" + br.readstring());

編寫服務端時,伺服器指定的位址應為本地位址(使用公網ip會報錯),埠注意必須是沒有被占用的埠。

編寫客戶端時,如果客戶端和伺服器在同一臺機器上,客戶端可以使用本地位址。如果不在同一臺機器上,客戶端必須使用伺服器的遠端公網ip。

解析(一) 同步 非同步

目錄 同步 非同步 注 參考 問題 一 請說明一下執行緒中的同步和非同步有何異同?並且請舉例說明在什麼情況下會使用到同步和非同步?兩個程序間的訊息隱含著某種程式的同步 只有當乙個程序傳送出訊息之後,接受者才能接收訊息。且當乙個程序產生了send或者receive原語後,需要確定會發生什麼。即發出乙個...

TCP通訊(一) 同步連線

這篇部落格主要包含兩個部分的內容 乙個是服務端的 乙個是客戶端的 一 服務端類 using system using system.collections.generic using system.linq using system.text using system.threading.tasks...

mysql教程之配置檔案詳解(一)

configure prefix usr local mysql without debug 去除 debug 模式.enable thread safe client 以執行緒方式編譯客戶端.with pthread 強制使用 pthread 執行緒庫編譯.enable assembler 允許使...