سلام.
ترجیح میدم به جای استفاده از کامپوننت از دستورات خود C# استفاده کنم تا یاد بگیرم.
میشه بیشتر توضیح بدی.
این کد رو تو قسمت Client تست کن.
using System;
using System.Drawing;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
classAsyncTcpClient : Form
{
privateTextBox newText;
privateTextBox conStatus;
privateListBox results;
privateSocket client;
privatebyte[] data = newbyte[1024];
privateint size = 1024;
public AsyncTcpClient()
{
Text = "Asynchronous TCP Client";
Size = newSize(400, 380);
Label label1 = newLabel();
label1.Parent = this;
label1.Text = "Enter text string:";
label1.AutoSize = true;
label1.Location = newPoint(10, 30);
newText = newTextBox();
newText.Parent = this;
newText.Size = newSize(200, 2 * Font.Height);
newText.Location = newPoint(10, 55);
results = newListBox();
results.Parent = this;
results.Location = newPoint(10, 85);
results.Size = newSize(360, 18 * Font.Height);
Label label2 = newLabel();
label2.Parent = this;
label2.Text = "Connection Status:";
label2.AutoSize = true;
label2.Location = newPoint(10, 330);
conStatus = newTextBox();
conStatus.Parent = this;
conStatus.Text = "Disconnected";
conStatus.Size = newSize(200, 2 * Font.Height);
conStatus.Location = newPoint(110, 325);
Button sendit = newButton();
sendit.Parent = this;
sendit.Text = "Send";
sendit.Location = newPoint(220, 52);
sendit.Size = newSize(5 * Font.Height, 2 * Font.Height);
sendit.Click += newEventHandler(ButtonSendOnClick);
Button connect = newButton();
connect.Parent = this;
connect.Text = "Connect";
connect.Location = newPoint(295, 20);
connect.Size = newSize(6 * Font.Height, 2 * Font.Height);
connect.Click += newEventHandler(ButtonConnectOnClick);
Button discon = newButton();
discon.Parent = this;
discon.Text = "Disconnect";
discon.Location = newPoint(295, 52);
discon.Size = newSize(6 * Font.Height, 2 * Font.Height);
discon.Click += newEventHandler(ButtonDisconOnClick);
}
void ButtonConnectOnClick(object obj, EventArgs ea)
{
conStatus.Text = "Connecting...";
Socket newsock = newSocket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
IPEndPoint iep = newIPEndPoint(IPAddress.Parse("127.0.0.1"), 5050);
newsock.BeginConnect(iep, newAsyncCallback(Connected), newsock);
}
void ButtonSendOnClick(object obj, EventArgs ea)
{
byte[] message = Encoding.ASCII.GetBytes(newText.Text);
newText.Clear();
client.BeginSend(message, 0, message.Length, SocketFlags.None,
newAsyncCallback(SendData), client);
}
void ButtonDisconOnClick(object obj, EventArgs ea)
{
client.Close();
conStatus.Text = "Disconnected";
}
void Connected(IAsyncResult iar)
{
client = (Socket)iar.AsyncState;
try
{
client.EndConnect(iar);
conStatus.Text = "Connected to: " + client.RemoteEndPoint.ToString();
client.BeginReceive(data, 0, size, SocketFlags.None,
newAsyncCallback(ReceiveData), client);
}
catch (SocketException)
{
conStatus.Text = "Error connecting";
}
}
void ReceiveData(IAsyncResult iar)
{
Socket remote = (Socket)iar.AsyncState;
int recv = remote.EndReceive(iar);
string stringData = Encoding.ASCII.GetString(data, 0, recv);
results.Items.Add(stringData);
}
void SendData(IAsyncResult iar)
{
Socket remote = (Socket)iar.AsyncState;
int sent = remote.EndSend(iar);
remote.BeginReceive(data, 0, size, SocketFlags.None,
newAsyncCallback(ReceiveData), remote);
}
publicstaticvoid Main()
{
Application.Run(newAsyncTcpClient());
}
}