很多人在研究flash的socket中經常會出現一些問題,所以提供乙個別人的程式**出來給大家參考...
這是vs2003下的c#程式的主要源**,經過測試的。不包含一些自動生成的**。
這些**是根據乙個開源的c# socket程式改編的,而且已經寫了比較詳細的注釋了。
c#源**
windows 應用的窗體程式:form1.cs
using system;
using system.io;
using system.drawing;
using system.collections;//arraylist引用到這個命名空間的類
using system.componentmodel;
using system.windows.forms;
using system.data;
using system.net;
using system.net.sockets;
using system.threading;
namespace chatserver//伺服器端命名空間
private void initclient()
private void crun()
//else
message = "chat|test";
byte bf = system.text.encoding.utf8.getbytes(message.tochararray());
ns.write(bf, 0, bf.length);
thread.sleep(2000);}}
/**////
/// 清理所有正在使用的資源。
///
protected override void dispose( bool disposing )
}base.dispose( disposing );
}windows form designer generated code#region windows form designer generated code
/**////
/// 設計器支援所需的方法 - 不要使用**編輯器修改
/// 此方法的內容。
///
private void initializecomponent()
#endregion
/**////
/// 開始監聽
///
private void startlistening()
catch(exception e)//如果出現異常則打控制台列印到螢幕}}
/**////
/// 給乙個客戶提供服務
///
private void serviceclient()
catch(socketexception ex)
string clientcommand = system.text.encoding.utf8.getstring(buffer);//把得到的資料用ascii的編碼形式讀出解決中文的顯示問題
label1.text=clientcommand;
string tokens = clientcommand.split(new char);//以|號劃分的命令資料
console.writeline(clientcommand);
if (tokens[0] == "conn")//連線命令訊息
else
if (tokens[0] == "chat")//聊天命令訊息
/**////
/// 傳送訊息到指定的client
///
/// client
/// 訊息
private void sendtoclient(client cl, string message)
catch(exception)//如果有異常則退出
/**////
/// 應用程式的主入口點。
///
private void form1_load(object sender, system.eventargs e)
private void lbclients_selectedindexchanged(object sender, system.eventargs e)
private void button1_click(object sender, system.eventargs e)}}
}class 類程式:client.cs
using system;
using system.threading;
namespace chatserver //定義命名空間
/**////
/// 過載:轉成字串
///
/// 返回終端加上client名稱
public override string tostring()
/**////
/// 獲取和設定執行緒
///
public thread clthread
set}
/**////
/// 獲取和設定終端
///
public endpoint host
set}
/**////
/// 獲取和設定client名稱
///
public string name
set}
/**////
/// 獲取和設定套介面
///
public socket sock
set}}}
flash源**
這是flash的**,**比較簡單,沒有寫什麼注釋。
聊天.fla
function onconnect(success) else
}function ondata(src)
};/////////////////////////////////////////
sendmsgbtn.onrelease = function() else if (!privatecheckbox.selected) else
}msgit.text = '';
};disconnectbtn.onrelease = function() ;
function init()
init();
//連線到伺服器
var isconn:boolean = false;
mylistener = new object();
mylistener.onkeydown = function ()
key.addlistener(mylistener);
Windows 纖程 協程
寫這篇文章的原因是,很多框架 庫都有協程 纖程的支援,比如python的gevent,php 的swoole等等,但是具體是什麼樣的呢?為什麼協程方式效能會更好?很多初學者聽個詞,聽風就是雨,把協程和io能混成乙個概念。使用纖程的第乙個步驟是將已有的執行緒轉換為乙個纖程。convertthreadt...
協程巢狀協程
import asyncio import functools 第三層協程 async def test1 print 我是test1 await asyncio.sleep 1 print test1已經睡了1秒 await asyncio.sleep 3 print test1又睡了3秒 ret...
9 協程 協程理論
本節的主題是基於單執行緒來實現併發,即只用乙個主線程 很明顯可利用的cpu只有乙個 情況下實現併發,為此我們需要先回顧下併發的本質 切換 儲存狀態 ps 在介紹程序理論時,提及程序的三種執行狀態,而執行緒才是執行單位,所以也可以將上圖理解為執行緒的三種狀態cpu正在執行乙個任務,會在兩種情況下切走去...