Hi!
I am having difficult time making a small modification to a textbook sample code.
This code is for two applications: first application sends a file to TCP port and second listens on TCP port and receives it.
First App TCP Send form has two text boxes, named txtHost and txtPort, with values "localhost" and "2112".
Listener has rich text box named txtDisplay.
I added second button to the TCP Send application, copied the code from the first button and change a filename to be sent. It worked.
Now I have first application with two buttons sending two different files.
The problem: after I send one file, I cannot send another. I get an error message saying that the target machine actively refused connection.
Testing revealed that restarting listener application between button pushes works-both files are received, albeit not at once. However restarting sender application has no effect-listener still refuses connection.
Could you pls point out what needs to be modified to receive and display both files?
Thank you
///here is my code sample
/// Socket Listener application
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.IO;
using System.Net.Sockets;
using System.Threading;
using System.Text;
namespace WinsockListen2
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.RichTextBox txtDisplay;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
Thread thread = new Thread(new ThreadStart(Listen));
thread.Start();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.txtDisplay = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(72, 0);
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 1;
this.textBox1.Text = "textBox1";
//
// txtDisplay
//
this.txtDisplay.Location = new System.Drawing.Point(0, 24);
this.txtDisplay.Name = "txtDisplay";
this.txtDisplay.Size = new System.Drawing.Size(288, 248);
this.txtDisplay.TabIndex = 3;
this.txtDisplay.Text = "richTextBox1";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.txtDisplay,
this.textBox1});
this.Name = "Form1";
this.Text = "Listen";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
public void Listen()
{
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, protocolType.Tcp);
listener.Bind(new IPEndPoint(IPAddress.Any, 2112));
listener.Listen(0);
Socket socket = listener.Accept();
Stream netStream = new NetworkStream(socket);
StreamReader reader = new StreamReader(netStream);
string result = reader.ReadToEnd();
Invoke(new UpdateDisplayDelegate(UpdateDisplay), new object[] {result});
socket.Close();
listener.Close();
}
public void UpdateDisplay(string text)
{
txtDisplay.Text = text;
}
protected delegate void UpdateDisplayDelegate(string text);
}
}
///////////////////////TCP SEND APPLICARION////////////////
/////Modify target file paths as you wish for this example//
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace Wrox.ProCSharp.InternetAccess.TcpSend
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtHost;
private System.Windows.Forms.TextBox txtPort;
private System.Windows.Forms.Button button2;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.txtHost = new System.Windows.Forms.TextBox();
this.txtPort = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// txtHost
//
this.txtHost.Location = new System.Drawing.Point(8, 32);
this.txtHost.Name = "txtHost";
this.txtHost.Size = new System.Drawing.Size(104, 20);
this.txtHost.TabIndex = 0;
this.txtHost.Text = "localhost";
//
// txtPort
//
this.txtPort.Location = new System.Drawing.Point(136, 32);
this.txtPort.Name = "txtPort";
this.txtPort.Size = new System.Drawing.Size(40, 20);
this.txtPort.TabIndex = 1;
this.txtPort.Text = "2112";
//
// button1
//
this.button1.Location = new System.Drawing.Point(8, 64);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(88, 32);
this.button1.TabIndex = 2;
this.button1.Text = "Send File";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label1
//
this.label1.Location = new System.Drawing.Point(136, 8);
this.label1.Name = "label1";
this.label1.TabIndex = 3;
this.label1.Text = "Port";
//
// label2
//
this.label2.Location = new System.Drawing.Point(8, 8);
this.label2.Name = "label2";
this.label2.TabIndex = 4;
this.label2.Text = "Hostname";
//
// button2
//
this.button2.Location = new System.Drawing.Point(112, 72);
this.button2.Name = "button2";
this.button2.TabIndex = 5;
this.button2.Text = "button2";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(200, 109);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.button2,
this.label2,
this.label1,
this.button1,
this.txtPort,
this.txtHost});
this.Name = "Form1";
this.Text = "TcpSend";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)
{
TcpClient tcpClient = new TcpClient(txtHost.Text, Int32.Parse(txtPort.Text));
NetworkStream ns = tcpClient.GetStream();
//////////// TARGET FILE PATH///////////////////
FileStream fs = File.Open("c:\\..\\boot.ini", FileMode.Open);
int data = fs.ReadByte();
while(data != -1)
{
ns.WriteByte((byte)data);
data = fs.ReadByte();
}
fs.Close();
ns.Close();
tcpClient.Close();
}
private void button2_Click(object sender, System.EventArgs e)
{
TcpClient tcpClient = new TcpClient(txtHost.Text, Int32.Parse(txtPort.Text));
NetworkStream ns = tcpClient.GetStream();
//////////// TARGET FILE PATH///////////////////
FileStream fs = File.Open("..\\..\\form1.cs", FileMode.Open);
int data = fs.ReadByte();
while(data != -1)
{
ns.WriteByte((byte)data);
data = fs.ReadByte();
}
fs.Close();
ns.Close();
tcpClient.Close();
}
}
}
I am having difficult time making a small modification to a textbook sample code.
This code is for two applications: first application sends a file to TCP port and second listens on TCP port and receives it.
First App TCP Send form has two text boxes, named txtHost and txtPort, with values "localhost" and "2112".
Listener has rich text box named txtDisplay.
I added second button to the TCP Send application, copied the code from the first button and change a filename to be sent. It worked.
Now I have first application with two buttons sending two different files.
The problem: after I send one file, I cannot send another. I get an error message saying that the target machine actively refused connection.
Testing revealed that restarting listener application between button pushes works-both files are received, albeit not at once. However restarting sender application has no effect-listener still refuses connection.
Could you pls point out what needs to be modified to receive and display both files?
Thank you
///here is my code sample
/// Socket Listener application
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.IO;
using System.Net.Sockets;
using System.Threading;
using System.Text;
namespace WinsockListen2
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.RichTextBox txtDisplay;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
Thread thread = new Thread(new ThreadStart(Listen));
thread.Start();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.txtDisplay = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(72, 0);
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 1;
this.textBox1.Text = "textBox1";
//
// txtDisplay
//
this.txtDisplay.Location = new System.Drawing.Point(0, 24);
this.txtDisplay.Name = "txtDisplay";
this.txtDisplay.Size = new System.Drawing.Size(288, 248);
this.txtDisplay.TabIndex = 3;
this.txtDisplay.Text = "richTextBox1";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.txtDisplay,
this.textBox1});
this.Name = "Form1";
this.Text = "Listen";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
public void Listen()
{
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, protocolType.Tcp);
listener.Bind(new IPEndPoint(IPAddress.Any, 2112));
listener.Listen(0);
Socket socket = listener.Accept();
Stream netStream = new NetworkStream(socket);
StreamReader reader = new StreamReader(netStream);
string result = reader.ReadToEnd();
Invoke(new UpdateDisplayDelegate(UpdateDisplay), new object[] {result});
socket.Close();
listener.Close();
}
public void UpdateDisplay(string text)
{
txtDisplay.Text = text;
}
protected delegate void UpdateDisplayDelegate(string text);
}
}
///////////////////////TCP SEND APPLICARION////////////////
/////Modify target file paths as you wish for this example//
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace Wrox.ProCSharp.InternetAccess.TcpSend
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtHost;
private System.Windows.Forms.TextBox txtPort;
private System.Windows.Forms.Button button2;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.txtHost = new System.Windows.Forms.TextBox();
this.txtPort = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// txtHost
//
this.txtHost.Location = new System.Drawing.Point(8, 32);
this.txtHost.Name = "txtHost";
this.txtHost.Size = new System.Drawing.Size(104, 20);
this.txtHost.TabIndex = 0;
this.txtHost.Text = "localhost";
//
// txtPort
//
this.txtPort.Location = new System.Drawing.Point(136, 32);
this.txtPort.Name = "txtPort";
this.txtPort.Size = new System.Drawing.Size(40, 20);
this.txtPort.TabIndex = 1;
this.txtPort.Text = "2112";
//
// button1
//
this.button1.Location = new System.Drawing.Point(8, 64);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(88, 32);
this.button1.TabIndex = 2;
this.button1.Text = "Send File";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label1
//
this.label1.Location = new System.Drawing.Point(136, 8);
this.label1.Name = "label1";
this.label1.TabIndex = 3;
this.label1.Text = "Port";
//
// label2
//
this.label2.Location = new System.Drawing.Point(8, 8);
this.label2.Name = "label2";
this.label2.TabIndex = 4;
this.label2.Text = "Hostname";
//
// button2
//
this.button2.Location = new System.Drawing.Point(112, 72);
this.button2.Name = "button2";
this.button2.TabIndex = 5;
this.button2.Text = "button2";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(200, 109);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.button2,
this.label2,
this.label1,
this.button1,
this.txtPort,
this.txtHost});
this.Name = "Form1";
this.Text = "TcpSend";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)
{
TcpClient tcpClient = new TcpClient(txtHost.Text, Int32.Parse(txtPort.Text));
NetworkStream ns = tcpClient.GetStream();
//////////// TARGET FILE PATH///////////////////
FileStream fs = File.Open("c:\\..\\boot.ini", FileMode.Open);
int data = fs.ReadByte();
while(data != -1)
{
ns.WriteByte((byte)data);
data = fs.ReadByte();
}
fs.Close();
ns.Close();
tcpClient.Close();
}
private void button2_Click(object sender, System.EventArgs e)
{
TcpClient tcpClient = new TcpClient(txtHost.Text, Int32.Parse(txtPort.Text));
NetworkStream ns = tcpClient.GetStream();
//////////// TARGET FILE PATH///////////////////
FileStream fs = File.Open("..\\..\\form1.cs", FileMode.Open);
int data = fs.ReadByte();
while(data != -1)
{
ns.WriteByte((byte)data);
data = fs.ReadByte();
}
fs.Close();
ns.Close();
tcpClient.Close();
}
}
}