Socket程式設計之聊天室

2021-09-24 21:29:07 字數 2263 閱讀 3187

1.單執行緒模式:

建立服務端:

第一步,準備位址和埠;第二步,建立乙個serversocket物件;

第三步,等待客戶端連線;最後一步,資料接收和傳送。

public class singlethreadserver  catch (ioexception e) }}

public class singlethreadclient  catch (ioexception e) }}

結果如下:

2.多執行緒模式:

上面的server和client只是進行了簡單的通訊操作:伺服器端接收到客戶端連線之後,伺服器端向客戶端輸出乙個字串,而客戶端也只是讀取伺服器端的字串後就退出了。

實際應用中的客戶端則可能需要和伺服器端保持長時間通訊,即伺服器端需要不斷地讀取客戶端資料,並向客戶端寫入資料;客戶端也不需要不斷地讀取伺服器端資料,並向伺服器端寫入資料。

建立服務端:

首先建立乙個與客戶端互動的任務處理;

public class clienthandler implements runnable 

@override

public void run()

continue;

}if (line.startswith("groupchat:"))

continue;

}if (line.startswith("privatechat:"))

continue;

}if (line.equalsignorecase("bye"))

}} catch (ioexception e)

}private void quitchat()

private void privatechat(string name, string message)

}private void groupchat(string message)

sendmessage(socket, this.name + "說:" + message);}}

private void register(string name)

private void printonlineclient()

}//發指定訊息到客戶端

private void sendmessage(socket client, string s) catch (ioexception e) }}

建立服務端主程式。

public class multithreadserver 

} catch (ioexception e) finally }}

建立客戶端:

首先建立乙個讀取服務端資訊執行緒;

public class readdatafromserverthread extends thread

@override

public void run() catch (nosuchelementexception e)

}} catch (ioexception e) }}

再建立乙個傳送資訊給服務端的執行緒;

public class writedatatoserverthread extends thread

@override

public void run()

}this.client.close();

} catch (ioexception e) }}

最後客戶端主程式。

public class multithreadclient  catch (ioexception e) }}

先啟動服務端,再啟動多個客戶端。

結果如下:

網路程式設計之 使用Socket建立聊天室

使用基於tcp協議的socket建立聊天室,昨天我寫的部落格已經介紹了怎麼使用 serversocket 建立服務端,以及服務端怎麼返回資料給客戶端 昨天寫的部落格有個缺陷,就是 客戶端只能 先傳送,後讀取,對於正常情況來說應該是,客戶端讀取和傳送是互相不相干涉的兩個步驟,所以這裡就得使用到多執行緒...

python網路程式設計之TCP聊天室

socket的工作流程 伺服器端先初始化socket,然後與埠繫結 bind 對埠進行監聽 listen 呼叫accept阻塞,等待客戶端連線。客戶端初始化乙個socket,然後連線伺服器 connect 如果連線成功,這時客戶端與伺服器端的連線就建立了。客戶端傳送資料請求,伺服器端接收請求並處理請...

炫麗的Socket聊天室

今天我編寫了乙個聊天室,主要強調了介面上的渲染,實現了 的切換。下面我介紹下聊天室開發的注意事項 服務端 對於服務端而言,乙個執行良好的服務端對於網路程式設計來講至關重要,為了使我們的服務端不產生堵塞,我們採用常規的多執行緒程式設計,為每乙個客戶端開乙個執行緒,用乙個socket連線客戶端,並獲取資...