📄 remoteclient.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 + -