<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習電腦 > 網絡知識 > 網絡基礎知識 >

        怎么使用Socket實現局域網聊天

        時間: 加城1195 分享

          局域網通常是分布在一個有限地理范圍內的網絡系統,一般所涉及的地理范圍只有幾公里。局域網專用性非常強,具有比較穩定和規范的拓撲結構。這篇文章主要為大家詳細介紹了C#使用Socket實現局域網聊天的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

          C#代碼:

          servlet服務端

          using System;

          using System.Collections.Generic;

          using System.Drawing;

          using System.Windows.Forms;

          using System.Net;

          using System.Net.Sockets;

          using System.Threading;

          using System.IO;

          using System.Text;

          using System.Text.RegularExpressions;

          namespace Server

          {

          public partial class MainForm : Form

          {

          private TcpListener listener;

          private Dictionary socketList;

          private bool tag = true;

          private StringBuilder charList;

          public MainForm()

          {

          InitializeComponent();

          Control.CheckForIllegalCrossThreadCalls = false;

          }

          void Bu_StartClick(object sender, EventArgs e)

          {

          cb_chatList.Items.Clear();

          selectChat.Text="";

          int port = 8888;

          //創建服務端,并且啟動

          try{

          listener = new TcpListener(IPAddress.Parse(ipAddress()),port);

          listener.Start();

          bu_Start.Enabled = false;

          bu_stop.Enabled = true;

          }catch(Exception ex)

          {

          MessageBox.Show("服務器啟動失敗, 原因:"+ex.Message);

          bu_Start.Enabled = true;

          bu_stop.Enabled = false;

          return;

          }

          selectChat.Text = "服務器啟動成功,訪問IP:"+ipAddress()+" 端口號:"+port;

          //記錄住連接的客戶端

          socketList = new Dictionary();

          charList = new StringBuilder();

          //使用多線程,用于多個客戶端接入

          Thread th = new Thread(new ThreadStart(executeTask));

          th.Start();

          }

          public void executeTask()

          {

          while(tag)

          {

          //等待用戶連接

          TcpClient client = null;

          try{

          client = listener.AcceptTcpClient();

          }catch(Exception)

          {

          }

          Thread th = new Thread(executeRead);

          th.Start((Object)client);

          }

          }

          public void executeRead(Object pamars)

          {

          //永久監聽讀取客戶端

          TcpClient client = pamars as TcpClient;

          while(tag)

          {

          NetworkStream ns = client.GetStream();

          StreamReader sr = new StreamReader(ns);

          String msg = String.Empty;

          String people = String.Empty;

          try {

          msg = sr.ReadLine();

          if(msg.IndexOf("")!=-1)

          {

          msg = Regex.Split(msg,"=")[1];

          cb_chatList.Items.Add(msg);

          charList.Append(msg).Append("<@>");

          socketList.Add(msg,client);

          msg = "
        歡迎【"+msg+"】光臨
        ";

          }

          selectChat.AppendText(msg.Replace("
        ","\r\n"));

          sendMsg(String.Empty,msg);

          } catch (Exception) {

          //MessageBox.Show(ex.Message.ToString());

          break;

          }

          }

          }

          public void sendMsg(String target,String msg)

          {

          if(String.Empty!=target)

          {

          TcpClient client = socketList[target];

          StreamWriter sw = new StreamWriter(client.GetStream());

          sw.WriteLine(msg);

          sw.Flush();

          }else{

          Dictionary.KeyCollection keyColl = socketList.Keys;

          foreach (String name in keyColl)

          {

          StreamWriter sw = new StreamWriter(socketList[name].GetStream());

          sw.WriteLine(msg+"<@=@>"+charList.ToString());

          sw.Flush();

          }

          }

          }

          /*根據計算名獲取IP地址*/

          public String ipAddress()

          {

          IPAddress[] address = Dns.GetHostAddresses(Dns.GetHostName());

          return address[2].ToString();

          }

          void ServerFromFormClosing(object sender, FormClosingEventArgs e)

          {

          e.Cancel = false;

          if(tag)

          tag = false;

          if(listener!=null)

          listener.Stop();

          }

          void Bu_stopClick(object sender, EventArgs e)

          {

          bu_Start.Enabled = true;

          bu_stop.Enabled = false;

          if(tag)

          tag = false;

          if(listener!=null)

          listener.Stop();

          }

          }

          }

          Client客戶端

          using System;

          using System.Drawing;

          using System.Windows.Forms;

          using System.Threading;

          using System.Net;

          using System.Net.Sockets;

          using System.IO;

          using System.Text;

          using System.Text.RegularExpressions;

          namespace Client

          {

          public partial class MainForm : Form

          {

          private System.Windows.Forms.Timer closeWindowTimer;

          private StreamReader sr;

          private StreamWriter sw;

          private TcpClient tc;

          private ClientLong cl;

          private bool tag = true;

          public MainForm(TcpClient tcp,ClientLong clo)

          {

          cl = clo;

          tc = tcp;

          InitializeComponent();

          Control.CheckForIllegalCrossThreadCalls = false;

          bu_simple.Hide();

          }

          void ClientFromLoad(object sender, EventArgs e)

          {

          PiayCheckedChanged();

          }

          /*事件方法*/

          public void PiayCheckedChanged()

          {

          closeWindowTimer = new System.Windows.Forms.Timer();

          closeWindowTimer.Interval = 1000;

          closeWindowTimer.Tick += new EventHandler(theout);

          closeWindowTimer.Start();

          }

          /*執行的事件*/

          public void theout(object source, EventArgs e)

          {

          //這里單獨開一個線程用來顯示信息

          try{

          Thread t1 = new Thread(new ThreadStart(readMsg));

          t1.Start();

          }catch(Exception)

          {

          }

          }

          void readMsg()

          {

          if(tag && tc!=null){

          sr = new StreamReader(tc.GetStream());

          String msg = sr.ReadLine();

          String[] address = Regex.Split(msg,"<@=@>");

          chatText.AppendText(address[0].Replace("
        ","\r\n"));

          address = Regex.Split(address[1],"<@>");

          cb_chatList.Items.Clear();

          foreach (String s in address)

          {

          if(!String.IsNullOrEmpty(s) && s != cl.clientName)

          cb_chatList.Items.Add(s);

          }

          }

          }

          void Button1Click(object sender, EventArgs e)

          {

          if(String.IsNullOrEmpty(textBox2.Text)){

          MessageBox.Show("請輸入消息");return;

          }

          sw = new StreamWriter(tc.GetStream());

          sw.WriteLine("
        "+cl.clientName+"  "+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+"
         "+textBox2.Text);

          textBox2.Text = "";

          sw.Flush();

          }

          void Bu_exitClick(object sender, EventArgs e)

          {

          MainFormFormClosing(null,null);

          }

          void Button2Click(object sender, EventArgs e)

          {

          chatText.Text = "";

          }

          void MainFormFormClosing(object sender, FormClosingEventArgs e)

          {

          closeWindowTimer.Stop();

          cl.Close();

          tag = false;

          if(sr!=null)

          sr.Close();

          if(sw!=null)

          sw.Close();

          }

          void Bu_simpleClick(object sender, EventArgs e)

          {

          String selected = cb_chatList.Text;

          if(selected==null)

          {

          MessageBox.Show("請選擇單聊對象");

          return;

          }

          }

          }

          }

          補充:局域網、校園網安全維護方法

          校園網絡分為內網和外網,就是說他們可以上學校的內網也可以同時上互聯網,大學的學生平時要玩游戲購物,學校本身有自己的服務器需要維護;

          在大環境下,首先在校園網之間及其互聯網接入處,需要設置防火墻設備,防止外部攻擊,并且要經常更新抵御外來攻擊;

          由于要保護校園網所有用戶的安全,我們要安全加固,除了防火墻還要增加如ips,ids等防病毒入侵檢測設備對外部數據進行分析檢測,確保校園網的安全;

          外面做好防護措施,內部同樣要做好防護措施,因為有的學生電腦可能帶回家或者在外面感染,所以內部核心交換機上要設置vlan隔離,旁掛安全設備對端口進行檢測防護;

          內網可能有ddos攻擊或者arp病毒等傳播,所以我們要對服務器或者電腦安裝殺毒軟件,特別是學校服務器系統等,安全正版安全軟件,保護重要電腦的安全;

          對服務器本身我們要安全server版系統,經常修復漏洞及更新安全軟件,普通電腦一般都是撥號上網,如果有異常上層設備監測一般不影響其他電腦。做好安全防范措施,未雨綢繆。


        局域網聊天相關文章:

        1.局域網下怎么聊天用到什么命令

        2.局域網怎樣使用微信語音聊天功能

        3.不聯網局域網內計算機怎么互相聊天

        4.局域網微信消息列表在哪

        5.局域網微信群聊怎么找

        4051379 主站蜘蛛池模板: 好看的国产精品自拍视频| 久久精品亚洲成在人线av麻豆| 久久国产精品精品国产色| L日韩欧美看国产日韩欧美| 久久久久国产精品人妻| 国产在线无码精品无码| 国产又爽又黄又不遮挡视频| 极品蜜桃臀一区二区av| 偷窥盗摄国产在线视频| 看免费的无码区特aa毛片| 久久亚洲av综合悠悠色| 亚洲国产精品一区第二页| 国产精品中文字幕视频| 任你躁国产自任一区二区三区| 亚洲精品国产福利一区二区| 国产永久免费高清在线观看| 国产精品大全中文字幕| 亚洲中文字幕成人综合网| 成人免费无遮挡在线播放| 国产精品日日摸夜夜添夜夜添无码| 国产成人无码免费视频麻豆| 一区二区三区精品偷拍| 真人无码作爱免费视频| 国产极品AV嫩模| 漂亮的小少妇诱惑内射系列| 国产亚洲精品在av| 国产高清视频一区二区乱| 福利一区二区视频在线| 亚洲岛国成人免费av| 在线天堂新版资源www在线下载| 蜜桃av多人一区二区三区| 亚洲国产欧美在线人成app| 欧洲中文字幕一区二区| 亚洲欧洲日产国码综合在线| 国产精品无码无卡在线播放| 国产熟女丝袜av一二区| 久久久久香蕉国产线看观看伊| 亚洲V天堂V手机在线| 精品国产性色av网站| 最新精品露脸国产在线| 邻居少妇张开腿让我爽了在线观看|