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 主站蜘蛛池模板: 亚洲精品一区二区18禁| 久久综合九色综合97婷婷| 好吊视频在线一区二区三区| 亚洲第一福利网站在线观看| 91久久久久无码精品露脸| 国产一区二区波多野结衣| 国产国产久热这里只有精品| 极品少妇的粉嫩小泬看片 | 亚洲精品麻豆一二三区| 精品无码人妻一区二区三区| 亚洲色大成网站www久久九九| 亚洲人成电影在线天堂色| 国产午夜精品福利91| 强插少妇视频一区二区三区| 国产精品无遮挡猛进猛出| 欧洲美熟女乱又伦免费视频| 亚洲2区3区4区产品乱码2021 | 久久精品人人槡人妻人人玩AV| 偷拍精品一区二区三区| 日韩午夜福利视频在线观看| 绝顶丰满少妇av无码| 午夜综合网| 99热成人精品热久久66| 人妻聚色窝窝人体WWW一区| 国产超碰无码最新上传| 成全影院电视剧在线观看| 中文字幕亚洲一区二区三区| 亚洲色大成网站WWW久久| 中文文字幕文字幕亚洲色| 精品一区二区成人码动漫| 一区二区三区久久精品国产 | 97久久精品无码一区二区| 激情五月开心婷婷深爱| 日韩精品无码区免费专区 | 丰满人妻熟妇乱又精品视| 国产午夜精品无码一区二区| 国产婷婷综合在线视频中文| 国产麻豆精品手机在线观看| 久久人人爽人人爽人人av| 国产成人欧美日韩在线电影 | 亚洲一区二区精品动漫|