返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始

搜索
热搜: linux 技术
Hi~登录注册
查看: 1821|回复: 0

[原创] 【原创】C#开源TCP-Socket可用服务端和客户端代码

[复制链接]
发表于 2022-4-19 00:30:10 | 显示全部楼层 |阅读模式

少侠不来段修仙之旅吗~

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
C#开源TCP-Socket可用服务端和客户端代码

废话不多说,直接上代码,有缘人复制即可~


服务端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace socket_test2
{
    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;

    namespace SocketDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建Socket 相当于是通信的主机
                //监听打进来的电话,并转接给客服
                Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                //绑定ip和端口
                //string IPaddr = "192.168.0.106";
                //long IPaddrL = long.Parse(IPaddr);
                IPEndPoint IPBInd = new IPEndPoint(IPAddress.Parse("192.168.0.106"), 1234);               
                //EndPoint iped = IPEndPoint.Parse("192.168.0.106:1234");
                serverSocket.Bind(IPBInd);

                //监听有没有电话连接,顺便规划客服人数,如果是0就是无限个客服
                serverSocket.Listen(100);

                //接电话
                //分配客服和客户进行一对一通信
                //阻塞方法 没有电话打进来,那么代码就执行到这里 Accept
                Socket kefuScoket = serverSocket.Accept();
                System.Console.WriteLine("客户的本地端口是:" + kefuScoket.LocalEndPoint.ToString());
                System.Console.WriteLine("打电话进来的客户端是:" + kefuScoket.RemoteEndPoint.ToString());

                //接消息,需要一个消息的缓冲区
                byte[] readBuff = new byte[1024];

                while (true)
                {
                    //消息拿到,并存放在缓冲区,并记住消息的长度
                    int receiveCount = kefuScoket.Receive(readBuff);
                    string receiveMessage = Encoding.UTF8.GetString(readBuff, 0, receiveCount);
                    System.Console.WriteLine("客户端发过来的消息:" + receiveMessage);

                    //string backMessage = "我是你的专属客服,有什么可以帮助你的";
                    kefuScoket.Send(Encoding.UTF8.GetBytes("服务器已经接到你发来的消息:" + receiveMessage));
                }
            }
        }
    }


}



客户端
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace clientSocket
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //接收服务器的回馈
            byte[] readBuff = new byte[1024];

            //连接服务器
            clientSocket.Connect("192.168.0.106", 1234);

            //连接上服务器,就能发消息
            string sendMessage;

            //计数器
            int num = 0;

            while (true)
            {
                if (num >= 0)
                {
                    Thread.Sleep(1);
                    sendMessage = "你好,我是"+num+"用户";
                    num++;

                }
                else
                {
                    sendMessage = Console.ReadLine();
                }

                //转码,转成0101010的格式
                byte[] sendBytes = Encoding.UTF8.GetBytes(sendMessage);

                //把二进制的消息发出去
                clientSocket.Send(sendBytes);
                int count = clientSocket.Receive(readBuff);
                System.Console.WriteLine("服务器发送的消息是:" + Encoding.UTF8.GetString(readBuff, 0, count));

            }

        }
    }
}


游客
回复
*滑块验证:

DA论坛飞机票来了~
快速回复 返回顶部 返回列表