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

📄 remoteclient.cs

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

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

	/// <summary>
	/// Summary description for RemoteClient.
	/// </summary>
	public class RemoteClient
	{
		private string m_message = "";
		private string m_serverIp = "0.0.0.0";
		private int m_serverPort = 695;
		private string m_sendMessageText = "";

		public RemoteClient(string serverIp, int serverPort)
		{
			ServerIp = serverIp;
			ServerPort = serverPort;
		}

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

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

		private void SendMessageThread()
		{
			IPAddress serverIP = null;
			m_message = String.Empty;
			try
			{
				serverIP = IPAddress.Parse(m_serverIp);
			}
			catch(FormatException)
			{
				m_message = 
					"Invalid IP address entered - needs n.n.n.n, for example 192.168.0.103";
				ShowMessage(m_message);
				return;
			}
			
			bool verifyHost = false;
			if(verifyHost)
			{
				// Verify that the server exists
				IPHostEntry remoteHost;
				try
				{
					remoteHost = Dns.Resolve(m_serverIp);
				}
				catch (SocketException sexp)
				{
					if (sexp.ErrorCode == 11001) // No such host is known
					{
						m_message = 
							String.Format("Server {0} not known", m_serverIp);
						ShowMessage(m_message);
					}
					else
					{
						m_message =
							String.Format("DNS lookup of {0} caused error: {1}",
							m_serverIp, sexp.Message);
						ShowMessage(m_message);
					}
					return;
				}
			}

			// Try to connect to the server on port m_serverPort
			TcpClient client = new TcpClient();
			client.Connect(new IPEndPoint(serverIP, m_serverPort));

			m_message += "Status: Connecting...";
			ShowMessage(m_message);

			// Get the stream
			Stream strm;
			string response;
			try 
			{
				// Send back a message
				response = m_sendMessageText;
				
				// Convert the string to a Byte Array and send it
				Byte[] byteResponse = 
					Encoding.ASCII.GetBytes(response.ToCharArray());
				client.GetStream().Write(byteResponse, 0, byteResponse.Length);
				strm = client.GetStream();
			} 
			catch (InvalidOperationException) 
			{
				m_message = 
					String.Format("Cannot connect to server: {0}", m_serverIp);
				ShowMessage(m_message);
				return;
			}
			catch (SocketException exc) 
			{
				StringBuilder strB = new StringBuilder("");
				strB.Append(
					String.Format("Can't connect to server: {0}\r\n", 
					m_message));
				strB.Append(exc.Message + "\r\n");
				strB.Append("Socket Error Code: " 
					+ exc.ErrorCode.ToString());
				m_message = strB.ToString();
				ShowMessage(m_message);
				return;
			}

			// Read the stream and convert it to ASCII
			Byte[] inputBuffer = new Byte[128];
			int bytes = strm.Read(inputBuffer, 0, inputBuffer.Length);
			string responsePPC = 
				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}\"", responsePPC);
			ShowMessage(m_message);
			client.Close();
		}

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

		/// <summary>
		/// Gets or sets the IP address of the TCP server to connect to.
		/// </summary>
		public string ServerIp
		{
			get
			{
				return m_serverIp;
			}
			set
			{
				m_serverIp = value;
			}
		}

		/// <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 + -