⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remoteserver.cs

📁 WinCE上的图片浏览器
💻 CS
字号:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.IO;
using System.Threading;

namespace TcpListenerSample
{

	// FireEventArgs: a custom event inherited from EventArgs.
	public class RemoteServerEventArgs: EventArgs 
	{
		public string message;
		public int bytes;
		public RemoteServerEventArgs(string message, int bytes) 
		{
			this.message = message;
			this.bytes = bytes;
		}
	}    //end of class RemoteServerEventArgs

	/// <summary>
	/// Summary description for RemoteServer.
	/// </summary>
	public class RemoteServer
	{
		private string m_Message = "";
		private int	m_serverPort;
		private string m_sendMessageText = "";
		public RemoteServer(int serverPort)
		{
			m_serverPort = serverPort;
		}

		public delegate void EventDelegate(object from, RemoteServerEventArgs args);
		public event EventDelegate myEvent;
		public void issueEvent(RemoteServerEventArgs args)
		{
			myEvent(this, args);
		}

		public void SendMessage(string message)
		{
			m_sendMessageText = message;
			Thread thread = new Thread(new ThreadStart(SendMessageThread));
			thread.Start();
		}

		private void SendMessageThread()
		{
			String response;

			try
			{
				// listen on port m_serverPort
				TcpListener tcpServer = new TcpListener(m_serverPort);

				// report where we are
				IPHostEntry thisHost = Dns.Resolve(Dns.GetHostName());
				ShowMessage(String.Format("Host {0} listening on {1}, port {2}",
					thisHost.HostName, thisHost.AddressList[0].ToString(), m_serverPort));

				tcpServer.Start();

				while(true)
				{
					// Accept will block until someone connects
					m_Message = "Waiting for connection...";
					ShowMessage(m_Message);
					TcpClient clientConn = tcpServer.AcceptTcpClient();

					// Send back a message
					response = m_sendMessageText;

					// Convert the string to a Byte Array and send it
					Byte[] byteResponse = 
						Encoding.ASCII.GetBytes(response.ToCharArray());
					clientConn.GetStream().Write(byteResponse, 0, byteResponse.Length);
					Stream strm = clientConn.GetStream();
					// Read the stream and convert it to ASCII
					Byte[] inputBuffer = new Byte[128];
					int bytes = strm.Read(inputBuffer, 0, inputBuffer.Length);
					string responsetest = 
						Encoding.ASCII.GetString(inputBuffer, 0, bytes);

					// Display the data
					m_Message = String.Format("Received {0} bytes", bytes);
					ShowMessage(m_Message);
					m_Message = String.Format("Message received: \"{0}\"", responsetest);
					ShowMessage(m_Message);
					clientConn.Close();
				}
			}
			catch (SocketException socketError)
			{
				if (socketError.ErrorCode == 10048)
				{
					ShowMessage("Error, port in use");
				}
			}
		}

		private void ShowMessage(string message)
		{
			RemoteServerEventArgs args = new RemoteServerEventArgs(message, message.Length);
			issueEvent(args);
		}

		/// <summary>
		/// Gets or sets the port of the TCP server to connect to.
		/// </summary>
		public int ServerPort
		{
			get
			{
				return m_serverPort;
			}
			set
			{
				m_serverPort = value;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -