• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 學習電腦 > 網絡知識 > 網絡基礎知識 >

    怎么使用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 主站蜘蛛池模板: 美女大量吞精在线观看456| 日本阿v视频在线观看| 久久精品日日躁夜夜躁欧美| 日韩高清在线中文字带字幕| 久久五月精品中文字幕| 成年美女黄网站色大片免费看| 中文字幕在线免费| 好深好爽办公室做视频| 99heicom视频| 国产精品中文字幕在线| 高清一级做a爱过程免费视频| 国产偷窥女洗浴在线观看| 美女和男生一起差差差| 伊人久久中文字幕| 欧美日一区二区三区| 久久综合日韩亚洲精品色| 无码AV免费毛片一区二区| √天堂中文官网8在线| 国内精品久久久久久久97牛牛| 俺去俺也在线www色官网| 国产啪精品视频网站丝袜| 网络色综合久久| 亚洲线精品一区二区三区| 欧美亚洲国产精品久久高清| 久久婷婷五夜综合色频| 总裁舌头伸进花唇裂缝中| 99热精品久久只有精品| 国产精品久久久久乳精品爆 | 欧洲美熟女乱又伦免费视频| 久久国产精品2020盗摄| 影音先锋女人aa鲁色资源| 97精品国产91久久久久久| 国产日产高清欧美一区| 色人阁在线视频| 亚洲色偷拍区另类无码专区| 桃花阁成人网在线观看| 久久18禁高潮出水呻吟娇喘| 天堂在线www资源在线下载| 一级有奶水毛片免费看| 国产乡下三级全黄三级bd| 男人j进入女人j内部免费网站 |