1。我在局域网的服务器上安装了一个服务,这个服务的功能是监听5678端口,并发送字节;
public void Start()
{
ReadQuotes();
listenerThread = new Thread(
new ThreadStart(this.Listener));
listenerThread.Start();
}
protected void Listener()
{
try
{
//IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];
IPAddress ipAddress = IPAddress.Parse("192.168.0.3");
listener = new TcpListener(ipAddress, port);
listener.Start();
while (true)
{
Socket socket = listener.AcceptSocket();
string message = GetRandomQuoteOfTheDay();
UnicodeEncoding encoder = new UnicodeEncoding();
byte[] buffer = encoder.GetBytes(message);
socket.Send(buffer, buffer.Length, 0);
socket.Close();
//performanceCounterRequestsTotal.Increment();
//performanceCounterBytesSentTotal.IncrementBy(buffer.Length);
//requestsPerSec++;
//bytesPerSec += buffer.Length;
}
}
catch (SocketException e)
{
string message = "Quote Server failed in Listener: "
+ e.Message;
eventLog.WriteEntry(message, EventLogEntryType.Error);
}
}
public void Stop()
{
listener.Stop();
}
public void Suspend()
{
listenerThread.Suspend();
}
public void Resume()
{
listenerThread.Resume();
}
2。同时我又做了一个客户端UI程序去读取服务器端发送的内容。
private void buttonQuote_Click(object sender, System.EventArgs e)
{
statusBar.Text = "";
string server = textHostname.Text;
try
{
int port = Convert.ToInt32(textPortNumber.Text);
}
catch (FormatException ex)
{
statusBar.Text = ex.Message;
return;
}
TcpClient client = new TcpClient();
try
{
client.Connect(textHostname.Text,
Convert.ToInt32(textPortNumber.Text));
NetworkStream stream = client.GetStream();
byte[] buffer = new Byte[1024];
int received = stream.Read(buffer, 0, 1024);
if (received <= 0)
{
statusBar.Text = "Read failed";
return;
}
textQuote.Text = Encoding.Unicode.GetString(buffer);
}
catch (SocketException ex)
{
statusBar.Text = ex.Message;
}
finally
{
client.Close();
}
}
问题是:
1。当我在同一台机器上运行客户端程序时可以访问,不同机器上运行客户端时就会提示:“由于连接方在一段时间后没有正确的答复或连接的主机没有反应,连接尝试失败。”
public void Start()
{
ReadQuotes();
listenerThread = new Thread(
new ThreadStart(this.Listener));
listenerThread.Start();
}
protected void Listener()
{
try
{
//IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];
IPAddress ipAddress = IPAddress.Parse("192.168.0.3");
listener = new TcpListener(ipAddress, port);
listener.Start();
while (true)
{
Socket socket = listener.AcceptSocket();
string message = GetRandomQuoteOfTheDay();
UnicodeEncoding encoder = new UnicodeEncoding();
byte[] buffer = encoder.GetBytes(message);
socket.Send(buffer, buffer.Length, 0);
socket.Close();
//performanceCounterRequestsTotal.Increment();
//performanceCounterBytesSentTotal.IncrementBy(buffer.Length);
//requestsPerSec++;
//bytesPerSec += buffer.Length;
}
}
catch (SocketException e)
{
string message = "Quote Server failed in Listener: "
+ e.Message;
eventLog.WriteEntry(message, EventLogEntryType.Error);
}
}
public void Stop()
{
listener.Stop();
}
public void Suspend()
{
listenerThread.Suspend();
}
public void Resume()
{
listenerThread.Resume();
}
2。同时我又做了一个客户端UI程序去读取服务器端发送的内容。
private void buttonQuote_Click(object sender, System.EventArgs e)
{
statusBar.Text = "";
string server = textHostname.Text;
try
{
int port = Convert.ToInt32(textPortNumber.Text);
}
catch (FormatException ex)
{
statusBar.Text = ex.Message;
return;
}
TcpClient client = new TcpClient();
try
{
client.Connect(textHostname.Text,
Convert.ToInt32(textPortNumber.Text));
NetworkStream stream = client.GetStream();
byte[] buffer = new Byte[1024];
int received = stream.Read(buffer, 0, 1024);
if (received <= 0)
{
statusBar.Text = "Read failed";
return;
}
textQuote.Text = Encoding.Unicode.GetString(buffer);
}
catch (SocketException ex)
{
statusBar.Text = ex.Message;
}
finally
{
client.Close();
}
}
问题是:
1。当我在同一台机器上运行客户端程序时可以访问,不同机器上运行客户端时就会提示:“由于连接方在一段时间后没有正确的答复或连接的主机没有反应,连接尝试失败。”