홈
분류 전체보기
(11)
일상
(2)
잡기술
(4)
HMI
(2)
Intouch
(0)
Cimplicity
(2)
프로그래밍
(3)
C#
(3)
ABOUT ME
-
트위터
인스타그램
Today
-
Yesterday
-
Total
-
weird feeling
weird feeling
메뉴
검색
컨텐츠 검색
블로그 내 검색
C#소켓 1:1채팅 서버
프로그래밍/C#
2017. 4. 13. 16:10
using System; using System; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.IO; namespace server { public partial class Form1 : Form { public class Network { public Socket sock; public byte[] buffer; public Int32 size; public Network(Int32 buffersize) { this.size = buffersize; this.buffer = new byte[size]; } public void inibuffer() { this.buffer = null; this.buffer = new byte[size]; } } private Socket serverSocket; private AsyncCallback acbReceiveH; private AsyncCallback acbSendH; private AsyncCallback acbAcceptH; private FileStream fsRecv = null; private int flag = 0; private byte[] readB = new byte[3072]; public delegate void SetProgCallBack(int vv); public delegate void SetLabelCallBack(string str); NetworkStream stream = default(NetworkStream); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { IPAddress ipaddress = Dns.Resolve(Dns.GetHostName()).AddressList[0]; ServIPtextBox.Text = Convert.ToString(ipaddress); Porttextbox.Text = ""; } #region [서버오픈 버튼] private void Openbutton_Click(object sender, EventArgs e) { try { flag = 1; acbReceiveH = new AsyncCallback(handleDataReceive); acbSendH = new AsyncCallback(handleDataSend); acbAcceptH = new AsyncCallback(handleConnectionRequest); serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); serverSocket.Bind(new IPEndPoint(IPAddress.Parse(ServIPtextBox.Text), Convert.ToInt32(Porttextbox.Text))); serverSocket.Listen(5); serverSocket.BeginAccept(acbAcceptH, null); } catch (Exception e1) { MessageBox.Show(e1.Message); } } #endregion #region [메세지 전송 버튼] private void Sendbutton_Click(object sender, EventArgs e) { Network ao = new Network(1); ao.buffer = Encoding.UTF8.GetBytes(SendtextBox.Text); //SendtextBox.Text = ""; ao.sock = serverSocket; serverSocket.BeginSend(ao.buffer, 0, ao.buffer.Length, SocketFlags.None, acbSendH, ao); } #endregion public void handleDataReceive(IAsyncResult ar) { Network ao = (Network)ar.AsyncState; Int32 recvBytes = ao.sock.EndReceive(ar); if (recvBytes > 0) ChattextBox.AppendText(Encoding.UTF8.GetString(ao.buffer)); ChattextBox.AppendText("\r\n"); if (fsRecv == null) { fsRecv = new FileStream("download", FileMode.Create, FileAccess.ReadWrite); } fsRecv.Write(ao.buffer, 0, ao.buffer.Length); ao.inibuffer(); ao.sock.BeginReceive(ao.buffer, 0, ao.buffer.Length, SocketFlags.None, acbReceiveH, ao); } public void handleDataSend(IAsyncResult ar) { Network ao = (Network)ar.AsyncState; Int32 sentbyte = ao.sock.EndSend(ar); if (sentbyte > 0) { ChattextBox.AppendText(Encoding.UTF8.GetString(ao.buffer) + "\r\n"); } } private void handleConnectionRequest(IAsyncResult ar) { serverSocket = serverSocket.EndAccept(ar); Network ao = new Network(100); ao.sock = serverSocket; serverSocket.BeginReceive(ao.buffer, 0, ao.buffer.Length, SocketFlags.None, acbReceiveH, ao); } } }
공유하기
게시글 관리
weird feeling
'
프로그래밍
>
C#
' 카테고리의 다른 글
C#소켓 1:1채팅 서버/클라이언트
(0)
2017.04.19
Thread 예제
(0)
2017.04.03
관련글
관련글 더보기
C#소켓 1:1채팅 서버/클라이언트
Thread 예제
티스토리툴바