خوب مشکل من هم همینه، ضمن اینکه من پروژه ام را نگذاشتم، یک سمپل گذاشتم
public partial class Form1 : Form
{
public Socket clientSocket;
public Socket serverSocket;
public byte[] byteData = new byte[1024];
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = checkBox1.Enabled = false;
if (checkBox1.Checked)
{
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 1600);
serverSocket.Bind(ipEndPoint);
serverSocket.Listen(4);
serverSocket.BeginAccept(new AsyncCallback(OnAccept), null);
}
else
{
clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 1600);
clientSocket.BeginConnect(ipEndPoint, new AsyncCallback(OnConnect), null);
}
}
private void OnAccept(IAsyncResult ar)
{
Socket clientSocket = serverSocket.EndAccept(ar);
serverSocket.BeginAccept(new AsyncCallback(OnAccept), null);
clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None,new AsyncCallback(OnReceive_s), clientSocket);
}
private void OnReceive_s(IAsyncResult ar)
{
Socket clientSocket = (Socket)ar.AsyncState;
clientSocket.EndReceive(ar);
Data msgReceived = new Data(byteData);
textBox2.Text += msgReceived.TextMessage;
Data msgToSend = new Data();
msgToSend.TextMessage = textBox1.Text;
byteData = msgToSend.ToByte();
clientSocket.BeginSend(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnSend_s), null);
}
public void OnSend_s(IAsyncResult ar)
{
//Socket client = (Socket)ar.AsyncState;
//client.EndSend(ar);
serverSocket.EndSend(ar);
}
private void OnReceive(IAsyncResult ar)
{
clientSocket.EndReceive(ar);
Data msgReceived = new Data(byteData);
if (msgReceived.TextMessage != null)
//textBox2.Text += msgReceived.TextMessage + "\r\n";
MessageBox.Show(msgReceived.TextMessage);
byteData = new byte[1024];
clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceive), null);
}
private void OnConnect(IAsyncResult ar)
{
clientSocket.EndConnect(ar);
Data msgToSend = new Data();
msgToSend.TextMessage = null;
byte[] b = msgToSend.ToByte();
clientSocket.BeginSend(b, 0, b.Length, SocketFlags.None, new AsyncCallback(OnSend), null);
}
private void OnSend(IAsyncResult ar)
{
clientSocket.EndSend(ar);
//DialogResult = DialogResult.OK;
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (checkBox1.Checked)
{
}
else
{
clientSocket.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
Data msgToSend = new Data();
msgToSend.TextMessage = textBox1.Text;
byteData = msgToSend.ToByte();
clientSocket.BeginSend(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnSend), null);
byteData = new byte[1024];
clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceive), null);
}
}