C Socket 非同步 聊天室

2021-06-13 14:14:55 字數 1927 閱讀 2171

socket 非同步通訊,執行緒池是由系統來維護執行緒的

注意:非同步呼叫時,不能使用同步呼叫的方法,會執行緒阻塞

server:

using system;

using system.collections.generic;

using system.text;

using system.net;

using system.net.sockets;

namespace socketdemo

public bool isopen

public string address

}// 管理client

class clientmanager

}public static bool i***ist(string address)

public static void close(string address)

});}

// 傳送訊息到clientlist

public static void sendmsgtoclientlist(string msg, string address = null)

});}

private static void sendtarget(iasyncresult res)

}// 接收訊息

class receivehelper

public void receivetarget(iasyncresult res)

else

}// 繼續等待

client.beginreceive(bytes, 0, bytes.length, socketflags.none, new asynccallback(receivetarget), client);}}

// 監聽請求

class accepthelper

public void accepttarget(iasyncresult res)

);receivehelper rs = new receivehelper() ;

iasyncresult recres = client.beginreceive(rs.bytes, 0, rs.bytes.length, socketflags.none, new asynccallback(rs.receivetarget), client);

// 繼續監聽

server.beginaccept(new asynccallback(accepttarget), server);}}

class program

;iasyncresult res = server.beginaccept(new asynccallback(ca.accepttarget), server);

string str = string.empty;

while (str != "exit")

server.close();}}

}

client:

using system;

using system.text;

using system.net;

using system.net.sockets;

client.close();

}static void connecttarget(iasyncresult res)

static void sendtarget(iasyncresult res)

static void receivetarget(iasyncresult res)

// 繼續等待輸入

client.beginreceive(oubytes, 0, 2048, socketflags.none, new asynccallback(receivetarget), client);}}

}

C Socket聊天室(小白整理)

最近算是0基礎學了socket的程式設計,發現很多不友好。其實是自己不知道,啊哈哈。最開始建立c 的指令碼時要建立窗體,而不是控制台程式。之後建議根據介面,自己來寫。還有別忘了server和client建立兩個程式哦。分別為服務端,客戶端。正式的socket服務端 public partial cl...

用CSocket實現聊天室程式

基本上是照著書上做的 花了10天左右反覆閱讀 基本搞懂後才除錯 雖然書上有很詳細的 但是有些東西還是不全 比如標頭檔案 還有vc6.0和2005的小差別 比如unicode編碼問題 send函式的第2個引數要 2 還有書上也有錯的地方 當你理解了書上 時就能找出 敲完執行時還遇到了亂碼問題 在csd...

C Socket 同步 多執行緒 聊天室

多執行緒,沒有自己寫執行緒池,是使用系統執行緒池來管理的 demo寫的比較亂 server using system using system.collections.generic using system.text using system.net using system.net.socket...