C flash socket 聊天程式

2022-07-22 01:51:11 字數 3350 閱讀 7723

很多人在研究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正在執行乙個任務,會在兩種情況下切走去...