freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于socket的聊天室系統(tǒng)設(shè)計(jì)(編輯修改稿)

2024-12-23 21:47 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 += 端口號(hào)必須為數(shù)字且范圍為 65535 + \r\n。 ()。 return。 } if (serverPort 1 || serverPort 65535) 畢業(yè)設(shè)計(jì)(論文) 13 { += 端口號(hào)必須為數(shù)字且范圍為 65535 + \r\n。 ()。 return。 } //獲取 IP地址。 string ipAddress = 。 IPAddress ipAdd = (ipAddress)。 listener = new TcpListener(ipAdd, serverPort)。 try { //啟動(dòng)監(jiān)聽(tīng)。 ()。 //顯示啟動(dòng)信息 += + 的服務(wù)已經(jīng)啟動(dòng) !正在監(jiān)聽(tīng)端口號(hào): + + \n。 //啟動(dòng)新的線程 Thread ServerThread = new Thread(new ThreadStart())。 = true。 ()。 = !。 = !。 } catch (Exception ex) { += +\r\n。 return。 } } 當(dāng)服務(wù)使用完成后,點(diǎn)擊結(jié)束服務(wù)按鈕,停止對(duì)端口的監(jiān)聽(tīng),界面及部分代碼如下: 畢業(yè)設(shè)計(jì)(論文) 14 圖 53 服務(wù)器停止 服務(wù) 后界面圖 private void btnStop_Click(object sender, EventArgs e) { = false。 (300)。 += + 的服務(wù)已經(jīng)停 止 ! + \r\n。 //204. 控制按鈕的可用性 = !。 = !。 } 服務(wù)器收到用戶信息后進(jìn)行進(jìn)行處理, 代碼如下: using System。 using 。 using 。 using 。 using 。 using 。 畢業(yè)設(shè)計(jì)(論文) 15 using 。 namespace AppServer { public class Client { FrmServer server。 Socket currentSocket。 string ipAddress。 string name。 //保留當(dāng)前連接的狀態(tài): //closed connected closed private string state = closed。 public Client(FrmServer server, Socket clientSocket) { = server。 = clientSocket。 ipAddress = getRemoteIPAddress()。 } //獲得連接客戶端的 IP地址,并轉(zhuǎn)換成一個(gè)字符串 private string getRemoteIPAddress() { return ((IPEndPoint)).()。 } //,每連入一個(gè)客戶端,會(huì)啟動(dòng)這個(gè)方法 public string Name { get { return name。 } set { name = value。 } } 畢業(yè)設(shè)計(jì)(論文) 16 public Socket CurrentSocket { get { return currentSocket。 } set { currentSocket = value。 } } public string IpAddress { get { return ipAddress。 } } public void ServiceClient() { string[] tokens = null。 byte[] buff = new byte[1024]。 bool KeepConnect = true。 while () { tokens = null。 try { //如果沒(méi)有信息達(dá)到服務(wù)器端,則休息 if (currentSocket == null || 1) { (200)。 continue。 } //接收數(shù)據(jù)并存入 buff數(shù)組中 畢業(yè)設(shè)計(jì)(論文) 17 int len = (buff)。 //將字符數(shù)組轉(zhuǎn)化為字符串 string clientCommand = (buff, 0, len)。 //tokens[0]中保存了命令標(biāo)志符( CONN、 CHAT、 PRIV、LIST或 EXIT) tokens = (new Char[] { 39。|39。 })。 if (tokens == null) { (150)。 continue。 } } catch (Exception ex) { (發(fā)生異常 : + )。 } if (tokens[0] == CONN) { //此時(shí)接收到的命令格式為: //命令標(biāo)志符( CONN) |發(fā)送者的用戶名 |, //tokens[1]中保存了發(fā)送者的用戶名 = tokens[1]。 if (()) { SendToClient(this, ERR|User + + 已經(jīng)存在 )。 } else { Hashtable syncClients = ( )。 (, this)。 //更新界面 ()。 畢業(yè)設(shè)計(jì)(論文) 18 //對(duì)每一個(gè)當(dāng)前在線的用戶發(fā)送 JOIN消息命令和LIST消息命令, //以此來(lái)更新客戶端的當(dāng)前在線用戶列表 myEnumerator = ()。 while (()) { Client client = (Client)。 SendToClient(client, JOIN| + tokens[1] + |)。 (100)。 } //更新?tīng)顟B(tài) state = connected。 SendToClient(this, ok)。 //向客戶端發(fā)送 LIST命令,以此更新客戶端的當(dāng)前在線用戶列表 string msgUsers = LIST| + ()。
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1