为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

判断多线程还是单线程

2017-11-24 11页 doc 29KB 58阅读

用户头像

is_036899

暂无简介

举报
判断多线程还是单线程判断多线程还是单线程 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Coll...
判断多线程还是单线程
判断多线程还是单线程 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Collections; using System.Windows; namespace ServerTCP { public partial class Form1 : Form { //Socket ServerSocket; //Socket ConnectedSocket; TcpListener serTcpSocket; ArrayList ConnectArrayList; byte[] sendBuffer; byte[] recvBuffer; string username; string clientusername; public Form1() { InitializeComponent(); ConnectArrayList = new ArrayList(); recvBuffer = new byte[1024]; richTextBoxReceive.Clear(); buttonStop.Enabled = false; buttonSend.Enabled = false; } private void buttonStart_Click(object sender, EventArgs e) { buttonStart.Enabled = false; buttonStop.Enabled = true; //ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress myip = IPAddress.Parse("127.0.0.1"); IPEndPoint myEndPoint = new IPEndPoint(myip, 8090); //ServerSocket.Bind(myEndPoint); //ServerSocket.Listen(10); serTcpSocket =new TcpListener (myEndPoint); serTcpSocket.Start(10); listBoxStatus.Items.Add("正在监听中......"); timerAccept.Enabled = true; buttonSend.Enabled = true; //buttonStart.Enabled = false; } private void buttonStop_Click(object sender, EventArgs e) { serTcpSocket.Stop(); for (int i = 0; i < ConnectArrayList.Count; i++) { ((User)ConnectArrayList[i]).connectSocket.Close(); } listBoxStatus.Items.Add("已停止监听~"); buttonStart.Enabled = true; buttonStop.Enabled = false; buttonSend.Enabled = false; comboBoxSend.Items.Clear(); comboBoxSend.Text = ""; ConnectArrayList.Clear(); timerAccept.Enabled = false; timerReceive.Enabled = false; } private void buttonSend_Click(object sender, EventArgs e) { sendBuffer = System.Text.Encoding.UTF8.GetBytes("SAID" + richTextBoxSend.Text); int index = comboBoxSend.SelectedIndex; if (richTextBoxSend.Text == "") { MessageBox.Show("发送信息不能为空","错误 ",MessageBoxButtons.OK,MessageBoxIcon.Error); } else { if (index == -1) { MessageBox.Show("请选择接收方~"); } else { try { ((User)ConnectArrayList[index]).connectNetworkStream.Write(sendBuffer, 0, sendBuffer.Length); richTextBoxSend.Clear(); } catch (Exception ex) { listBoxStatus.Items.Add(((User)ConnectArrayList[index]).connectSocket.RemoteEndPoint + ex.Message); ConnectArrayList.RemoveAt(index); comboBoxSend.Items.RemoveAt(index); comboBoxSend.Text = ""; } } } } private void timerAccept_Tick(object sender, EventArgs e) { Socket ConnectedSocket; //TcpClient ConnectedTcpSocket; if (serTcpSocket.Pending()) { ConnectedSocket = serTcpSocket.AcceptSocket(); //ConnectedTcpSocket = serTcpSocket.AcceptTcpClient(); User oneuser = new User(ConnectedSocket); ConnectArrayList.Add(oneuser); //comboBoxSend.Items.Add(ConnectedSocket.RemoteEndPoint); } if (ConnectArrayList.Count > 0 && !timerReceive.Enabled) { timerReceive.Enabled = true; } } private void timerReceive_Tick(object sender, EventArgs e) { for (int i = 0; i < ConnectArrayList.Count; i++) { if (((User)ConnectArrayList[i]).connectSocket.Poll(10, SelectMode.SelectRead)) { if (((User)ConnectArrayList[i]).connectNetworkStream.DataAvailable) { int received = ((User)ConnectArrayList[i]).connectNetworkStream.Read(recvBuffer, 0, recvBuffer.Length); string str = System.Text.Encoding.UTF8.GetString(recvBuffer, 0, received); string pd = str[0].ToString() + str[1].ToString() + str[2].ToString() + str[3].ToString(); if (pd == "SAID") { str = str.Substring(4); str += "\r"; richTextBoxReceive.Text += ((User)ConnectArrayList[i]).nickname + " 说:\n\t" + str; } else if (pd == "NICK") { clientusername = str.Substring(4); if (((User)ConnectArrayList[i]).nickname == null) { ((User)ConnectArrayList[i]).nickname = clientusername; listBoxStatus.Items.Add(string.Format("{0}({1})连接上 来", clientusername,((User)ConnectArrayList[i]).connectSocket.RemoteEndPoint)); comboBoxSend.Items.Add(clientusername + "(" + ((User)ConnectArrayList[i]).connectSocket.RemoteEndPoint + ")"); sendBuffer = System.Text.Encoding.UTF8.GetBytes("NICK" + username); ((User)ConnectArrayList[i]).connectNetworkStream.Write(sendBuffer, 0, sendBuffer.Length); } else { User one = new User(((User)ConnectArrayList[i]).connectSocket); comboBoxSend.Items.RemoveAt(i); ConnectArrayList.RemoveAt(i); one.nickname = clientusername; ConnectArrayList.Add(one); comboBoxSend.Text = ""; comboBoxSend.Items.Add(clientusername + "(" + one.connectSocket.RemoteEndPoint + ")"); } } } else { listBoxStatus.Items.Add(string.Format("{0}({1})掉线", ((User)ConnectArrayList[i]).nickname,((User)ConnectArrayList[i]).connectSocket.RemoteEndPoi nt)); ((User)ConnectArrayList[i]).connectSocket.Close();//TCP三步握 手,四步关闭 ConnectArrayList.RemoveAt(i); comboBoxSend.Items.RemoveAt(i); comboBoxSend.Text = ""; } } } } private void sendnickname(string newnickname) { int i; for (i = 0; i < ConnectArrayList.Count; i++) { if (((User)ConnectArrayList[i]).connectSocket.Poll(10, SelectMode.SelectWrite)) { sendBuffer = System.Text.Encoding.UTF8.GetBytes("NICK" + newnickname); ((User)ConnectArrayList[i]).connectNetworkStream.Write(sendBuffer, 0, sendBuffer.Length); } } } private void Form1_Load(object sender, EventArgs e) { if (UserSetting.ReadNickName(out username) == -1) { Application.Exit(); } else { this.Text = "服务端------" + username; this.notifyIcon1.Text = username; } } private void 更改昵称ToolStripMenuItem_Click(object sender, EventArgs e) { modifiynickname modiynick = new modifiynickname(); modiynick.ShowDialog(); UserSetting.modifiynickname = true; timerNickname.Enabled = true; } private void timerNickname_Tick(object sender, EventArgs e) { if (UserSetting.modifiynickname) { if (UserSetting.modifiynicknamepd) { string newnickname; UserSetting.ReadNickName(out newnickname); if (newnickname != username) { username = newnickname; _ChangeCaption(newnickname); sendnickname(newnickname); timerNickname.Enabled = false; } } } else timerNickname.Enabled = false; } private void _ChangeCaption(string caption) { this.Text = "服务端------" + caption; this.notifyIcon1.Text = caption; } private void 退出程序ToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } } }
/
本文档为【判断多线程还是单线程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索