private void buttonAsyncClientFileSend_Click(object sender, EventArgs e) { AsyncClientObject ao = new AsyncClientObject(1); ao.buffer = Encoding.UTF8.GetBytes("AsyncFileTrans/"); ao.workSocket = socketConAsyncClient; if (fileWorkClientAcceptSocket != null) { if (!fileWorkClientAcceptSocket.IsBound) { asyncCbClientFileAccept = new AsyncCallback(AsyncHandleClientFileAccept); asyncCbClientFileSend = new AsyncCallback(AsyncHandleClientFileSend); asyncCbClientFileRecv = new AsyncCallback(AsyncHandleClientFileRecv); fileWorkClientAcceptSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); fileWorkClientAcceptSocket.Bind(new IPEndPoint(IPAddress.Parse(labelAsyncClient2.Text), 8889)); fileWorkClientAcceptSocket.Listen(5); fileWorkClientAcceptSocket.BeginAccept(asyncCbClientFileAccept, null); } } else { asyncCbClientFileAccept = new AsyncCallback(AsyncHandleClientFileAccept); asyncCbClientFileSend = new AsyncCallback(AsyncHandleClientFileSend); asyncCbClientFileRecv = new AsyncCallback(AsyncHandleClientFileRecv); fileWorkClientAcceptSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); fileWorkClientAcceptSocket.Bind(new IPEndPoint(IPAddress.Parse(labelAsyncClient2.Text), 8889)); fileWorkClientAcceptSocket.Listen(5); fileWorkClientAcceptSocket.BeginAccept(asyncCbClientFileAccept, null); } buttonAsyncClientFileSend.Enabled = false; socketConAsyncClient.BeginSend(ao.buffer, 0, ao.buffer.Length, SocketFlags.None, asyncCbClientSend, ao); }
private void AsyncHandleClientImageAccept(IAsyncResult ar) { ImageAsyncClientAccepttSocket = ImageAsyncClientAccepttSocket.EndAccept(ar); IPEndPoint ipEPAcceptClient = (IPEndPoint)ImageAsyncClientAccepttSocket.RemoteEndPoint; if (ImageAsyncClientAccepttSocket.Connected) listBoxAsyncClient.Items.Add(ipEPAcceptClient.Address + "에서 이미지서버 접속함."); listBoxAsyncClient.SelectedIndex = listBoxAsyncClient.Items.Count - 1; AsyncClientObject ao = new AsyncClientObject(4096); ao.workSocket = ImageAsyncClientAccepttSocket; ImageAsyncClientAccepttSocket.BeginReceive(ao.buffer, 0, ao.buffer.Length, SocketFlags.None, asyncCbClientImageReceive, ao); }
private void AsyncHandleClientImageConnect(IAsyncResult ar) { Socket sock = (Socket)ar.AsyncState; try { sock.EndConnect(ar); if (sock.Connected) { AsyncClientObject ao = new AsyncClientObject(4096); ao.workSocket = sock; listBoxAsyncClient.Items.Add("이미지서버 접속 완료"); listBoxAsyncClient.SelectedIndex = listBoxAsyncClient.Items.Count - 1; sock.BeginReceive(ao.buffer, 0, ao.buffer.Length, SocketFlags.None, asyncCbClientImageReceive, ao); } else { sock.Close(); } } catch (Exception e1) { MessageBox.Show(e1.Message); } }
private void AsyncHandleClientFileAccept(IAsyncResult ar) { fileWorkClientAcceptSocket = fileWorkClientAcceptSocket.EndAccept(ar); IPEndPoint ipEPAcceptClient = (IPEndPoint)fileWorkClientAcceptSocket.RemoteEndPoint; listBoxAsyncClient.Items.Add(ipEPAcceptClient.Address + "에서 파일서버 접속함."); listBoxAsyncClient.SelectedIndex = listBoxAsyncClient.Items.Count - 1; AsyncClientObject ao = new AsyncClientObject(4096); ao.workSocket = fileWorkClientAcceptSocket; fileWorkClientAcceptSocket.BeginReceive(ao.buffer, 0, ao.buffer.Length, SocketFlags.None, asyncCbClientFileRecv, ao); }
private void AsyncHandleClientConnect(IAsyncResult ar) { Socket sock = (Socket)ar.AsyncState; try { sock.EndConnect(ar); if (sock.Connected) { AsyncClientObject ao = new AsyncClientObject(4096); ao.workSocket = sock; sock.BeginReceive(ao.buffer, 0, ao.buffer.Length, SocketFlags.None, asyncCbClientrecv, ao); listBoxAsyncClient.Items.Add("서버에 연결되었습니다."); buttonAsyncClientConnect.Enabled = false; buttonAsyncClientFileSend.Enabled = true; buttonAsyncClientSend.Enabled = true; buttonAsyncClientSendPicture.Enabled = true; } else { listBoxAsyncClient.Items.Add("연결에 실패하였습니다."); sock.Close(); } } catch (Exception e1) { MessageBox.Show(e1.Message); } listBoxAsyncClient.SelectedIndex = listBoxAsyncClient.Items.Count - 1; }
public void AsyncClientSendImage() { byte[] btImage = msPictureAsyncClient.ToArray(); AsyncClientObject ao2 = new AsyncClientObject(1); ao2.workSocket = ImageAsyncClientAccepttSocket; ao2.buffer = btImage; Thread.Sleep(100); ImageAsyncClientAccepttSocket.Send(ao2.buffer); buttonAsyncClientSendPicture.Enabled = true; //if(ImageAsyncClientAccepttSocket.Connected) //{ // ImageAsyncClientAccepttSocket.BeginSend(ao2.buffer, 0, ao2.buffer.Length, SocketFlags.None, asyncCbClientImageSend, ao2); //} //else //{ // listBoxAsyncClient.Items.Add("재시도중. . ."); // AsyncClientSendImage(); //} }
private void buttonAsyncClientSend_Click(object sender, EventArgs e) { AsyncClientObject ao = new AsyncClientObject(1); ao.buffer = Encoding.UTF8.GetBytes("클라이언트(비동기) : " + textBoxAsyncClientSend.Text); textBoxAsyncClientSend.Text = ""; ao.workSocket = socketConAsyncClient; socketConAsyncClient.BeginSend(ao.buffer, 0, ao.buffer.Length, SocketFlags.None, asyncCbClientSend, ao); }
private void buttonAsyncClientSendPicture_Click(object sender, EventArgs e) { openFileDialog1.Filter = "이미지|*.png;*.jpg;*.jpeg;*.bmp;*.gif;*.psd"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { pictureBoxAsyncClient.Image = Bitmap.FromFile(openFileDialog1.FileName); if (msPictureAsyncClient != null) { msPictureAsyncClient.Close(); msPictureAsyncClient.Dispose(); } msPictureAsyncClient = new MemoryStream(); pictureBoxAsyncClient.Image.Save(msPictureAsyncClient, System.Drawing.Imaging.ImageFormat.Png); AsyncClientObject ao = new AsyncClientObject(1); ao.buffer = Encoding.UTF8.GetBytes("ImageSend/" + msPictureAsyncClient.Length + "/"); ao.workSocket = socketConAsyncClient; if (ImageAsyncClientAccepttSocket != null) { if (!ImageAsyncClientAccepttSocket.IsBound) { asyncCbClientImageAccept = new AsyncCallback(AsyncHandleClientImageAccept); asyncCbClientImageSend = new AsyncCallback(AsyncHandleClientImageSend); asyncCbClientImageReceive = new AsyncCallback(AsyncHandleClientImageReceive); ImageAsyncClientAccepttSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); ImageAsyncClientAccepttSocket.Bind(new IPEndPoint(IPAddress.Parse(labelAsyncClient2.Text), 7879)); ImageAsyncClientAccepttSocket.Listen(5); ImageAsyncClientAccepttSocket.BeginAccept(asyncCbClientImageAccept, null); } } else { asyncCbClientImageAccept = new AsyncCallback(AsyncHandleClientImageAccept); asyncCbClientImageSend = new AsyncCallback(AsyncHandleClientImageSend); asyncCbClientImageReceive = new AsyncCallback(AsyncHandleClientImageReceive); ImageAsyncClientAccepttSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); ImageAsyncClientAccepttSocket.Bind(new IPEndPoint(IPAddress.Parse(labelAsyncClient2.Text), 7879)); ImageAsyncClientAccepttSocket.Listen(5); ImageAsyncClientAccepttSocket.BeginAccept(asyncCbClientImageAccept, null); } socketConAsyncClient.BeginSend(ao.buffer, 0, ao.buffer.Length, SocketFlags.None, asyncCbClientSend, ao); openFileDialog1.Dispose(); } else { openFileDialog1.Dispose(); } }