zoukankan      html  css  js  c++  java
  • C# Socket服务端和客户端通话

    服务端

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace tSocket
    {
        class Program
        {
            byte[] bytes = new byte[1024];
            Socket cSocket;
            static void Main(string[] args)
            {
                Program p = new Program();
                //打开链接
                p.open();
                //向服务端发送消息
                Console.WriteLine("请输入你要对服务端发送的消息:");
                string mes = Console.ReadLine();
                string con = p.messge(mes);
                Console.WriteLine("接受到服务端的消息:" + con);
    
    
            }
            byte[] data = new byte[1024];
            string messge(string mes)
            {
                //将发送的消息转成字节数组
                bytes = Encoding.UTF8.GetBytes(mes);
                //发送
                cSocket.Send(bytes);
                while (true)
                {
                    //接受服务端发送的消息,放入字节数组
                    int len = cSocket.Receive(data);
                    //将字节数组转成可读明文
                    string con = Encoding.UTF8.GetString(data, 0, len);
                    ////返回
                    return con;
                }
              
            }
            /// <summary>
            /// 打开链接
            /// </summary>
            void open()
            {
                //创建Socket对象 指定连接方式
                cSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //创建IP,端口
                IPAddress ip = IPAddress.Parse("10.116.253.10");
                int port = 7526;
                //封装IP和端口
                IPEndPoint Ipoint = new IPEndPoint(ip, port);
                //打开链接
                cSocket.Connect(Ipoint);
            }
        }
    }

    客户端

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ServerSocket
    {
        class Program
        {
            
            static void Main(string[] args)
            {
                //创建Socket对象,指定他的链接方式
                Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //建立IP
                string ip = "10.116.253.10";
                //创建端口
                int prot = 7526;//1~9999
                IPAddress IPAdd = IPAddress.Parse(ip);
                //封装IP和端口
                IPEndPoint point = new IPEndPoint(IPAdd, prot);
                //绑定IP和端口
                serverSocket.Bind(point);
                //开始监听
                serverSocket.Listen(100);
                Console.WriteLine("开始监听!");
    
                int i = 0;
                while (true)
                {
                    i++;
                    //接受客户链接
                    
                   Socket cSocket = serverSocket.Accept();
                   Console.WriteLine("接受第"+i+"个客户的连接!");
                   Client c = new Client(cSocket);
                }
    
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net.Sockets;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace ServerSocket
    {
        class Client
        {
            Socket sSocket;
            byte[] data = new byte[1024];
            Thread t;
            public Client(Socket cSocket)
            {
                //接受客户的连接
                sSocket = cSocket;
                //创建线程
                t = new Thread(Mess);
                //开始线程
                t.Start();
            }
    
            void Mess()
            {
                try
                {
                    while (true)
                    {
                        //将用户发送的数据以一个字节数组装起
                        int length = sSocket.Receive(data);
                        Console.WriteLine("接受客户端发的消息!");
                        string mess = Encoding.UTF8.GetString(data, 0, length);
    
                        if (mess == "con")
                        {
                            string con = "DataSource =.";
                            byte[] bytes = Encoding.UTF8.GetBytes(con);
                            sSocket.Send(bytes);
                        }
                        Console.WriteLine("接到用户的消息:" + mess);
                    }
                }
                catch (Exception)
                {
                    sSocket.Close();
                }
    
    
    
            }
        }
    }
  • 相关阅读:
    win10 网络突然连不上,解决办法
    Windows10下, pip 寻找指定库命令
    Django-Rest-Framework 教程: 5. 提高关联性和超链接API
    Django-Rest-Framework 教程: 6. ViewSets 和 Routers
    Django-Rest-Framework 教程: 4. 验证和权限
    Django-Rest-Framework 教程: 3. 使用 class based views
    Django-Rest-Framework 教程: 1. 序列化 (Serialization)
    Django-Rest-Framework 教程: 2. Requests 和 Responses
    Python——字符串的反转
    Python——指定文件格式
  • 原文地址:https://www.cnblogs.com/netlock/p/13339116.html
Copyright © 2011-2022 走看看