# SocketDemo **Repository Path**: koalamini/socket-demo ## Basic Information - **Project Name**: SocketDemo - **Description**: No description available - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-02 - **Last Updated**: 2021-09-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ``` 解决方案名称: SocketDem 项目类型: Windows窗体 项目1:ClientUser 项目2:ServerUser IDE: VS2019 16.8.2 语言: C# 框架: .net 4.7.2 ``` # 1 成果 ## 1.1 运行效果 ![运行效果](https://gitee.com/liu_wen_zhen/markdown-pictures/raw/master/2020/202012/20201202191328.gif) ## 1.2 服务端后台Socket监听线程 ```c# IPAddress ip = IPAddress.Parse(txtIP.Text);//IP地址 IPEndPoint point = new IPEndPoint(ip, int.Parse(txtPort.Text));//端口号 //开始监听 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Bind(point);//连接 socket.Listen(10);//监听 ShowMsg("开始监听"); //创建后台监听线程 Thread threadListen = new Thread(Listen); threadListen.IsBackground = true;//后台 threadListen.Start(socket); ``` ```c# private void Listen(object obj) { Socket server = (Socket)obj; try { while (true) { //连接成功 Socket socket = server.Accept(); //创建后台接受消息 Thread threadReveive = new Thread(ReceiveMsg); threadReveive.IsBackground = true;//后台 threadReveive.Start(socket); } } catch (Exception ex) { ShowMsg("监听失败!错误信息为:" + ex.Message); } } ``` ## 1.3 Socket接受消息 ```c# private void ReceiveMsg(object obj) { Socket socket = (Socket)obj; byte[] buffer = new byte[1024];//缓存空间 try { while (true) { int byteCount = socket.Receive(buffer); if (byteCount > 0) { string msg = Encoding.UTF8.GetString(buffer, 0, byteCount); } } } catch (Exception ex) { ShowMsg("接受失败!错误消息为:" + ex.Message); } } ``` ## 1.4 Socket发送消息 ```c# private void SendMsg(object obj) { Socket socket = (Socket)obj; try { //获取发送消息 string sClientName = txtName.Text; string sSend = txtSend.Text; string sMsg = sClientName + "_" + sSend; byte[] buffer = Encoding.UTF8.GetBytes(sMsg); //发送消息 socket.Send(buffer); } catch (Exception ex) { ShowMsg("接受失败!错误消息为:" + ex.Message); } } ``` ## 1.5 客户端socket连接服务端 ```c# IPAddress ip = IPAddress.Parse(txtIP.Text);//IP地址 IPEndPoint point = new IPEndPoint(ip, int.Parse(txtPort.Text));//端口号 //连接服务器 socket.Connect(point); //创建接受消息后台线程 Thread threadReveive = new Thread(ReceiveMsg); threadReveive.IsBackground = true;//后台 threadReveive.Start(); ``` # 2 后续开发 - [ ] 转发 - [ ] 广播