制作简单的Socket连接

今天来写一篇关于Socket联网的文章吧!,这篇文章写完后可实现一个简易的服务器和客户端的连接。打开VS新建一个控制台应用程序。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//网络通信
using System.Net;
using System.Net.Sockets;


namespace SocketTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请选择:1、服务器:2、客户端");
            string Input = Console.ReadLine();
            Program pro = new Program();
            if (Input=="1")
            {
                //写服务器代码
                pro.Server();
            }
            else
            {
                //写客户端代码
                pro.Client();
            }
            Console.ReadLine();
        }


        //服务器方法
        public void Server()
        {
            //1.创建Socket  需要引用命名空间 总服务器
            Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            //ipconfig
            IPAddress ip = IPAddress.Parse("192.168.10.235");   //ip需要写自己电脑的IP
            IPEndPoint point = new IPEndPoint(ip,5333);
            //绑定端口
            socket.Bind(point);
            //启用监听
            socket.Listen(100);
            //接收数据
            byte[] byteData = new byte[1024];
            //异常捕获
            try
            {
                while (true)
                {
                    //临时服务器  来处理客户端对应的请求
                    Socket tempSocket = socket.Accept();
                    //拿到数据长度
                    int length = tempSocket.Receive(byteData);
                    //根据长度转成对应的数据类型
                    string data = Encoding.UTF8.GetString(byteData, 0, byteData.Length);
                    Console.WriteLine("收到客户端数据了:" + data);
                    //准备为客户端返回数据了
                    byte[] sendData = Encoding.UTF8.GetBytes("感冒了好难受");
                    tempSocket.Send(sendData);
                }
            }
            catch(Exception e)
            {
                Console.WriteLine(e.Message);
                throw;
            }
           finally
            {
                Console.WriteLine("服务器关了");
                socket.Close();
            }
        }

       //客户端方法
        public void Client()
        {
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //打开cmd 输入 ipconfig 可查看自己本机的IP地址
            IPAddress ip = IPAddress.Parse("192.168.10.235");
            IPEndPoint point = new IPEndPoint(ip, 5333);
            socket.Connect(point);
            try
            {
                while (true)
                {
                    Console.WriteLine("请说话:");
                    string mes = Console.ReadLine();
                    if (mes != string.Empty)
                    {
                        //发送->byte
                        byte[] sendData = Encoding.UTF8.GetBytes(mes);
                        socket.Send(sendData);


                        //接收
                        byte[] receiveData = new byte[1024];  //1024字节等于一个byte


                        //拿到数据内容的长度
                        int length = socket.Receive(receiveData);
                        string str = Encoding.UTF8.GetString(receiveData, 0, receiveData.Length);
                        Console.WriteLine("服务器返回的数据为:" + str);
                    }
                }  
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                throw;
            }
        }
    }

}


代码写好后需要先运行VS,输入1就打开服务器了,然后在文件资源管理器中打开文件

制作简单的Socket连接

制作简单的Socket连接

制作简单的Socket连接

打开第一个输入2即可打开客户端了。具体流程可以参照下面这张图片!

制作简单的Socket连接

个人觉得还是有点难度,老是记不住,看来需要多加练习才行!