netMarketing库的tcp/ip客户端与服务器端类:SocketLibrary

版本要求: netMarketing1.4.0

命名空间:netMarketing.Net.SocketLibrary


客户端调用示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SocketClientTest
{
    class Program
    {
        public static int a = 0;
        public static int b = 0;
        public static int c = 0;
        static SocketLibrary.Client client;
        static SocketLibrary.Client client2;
        static SocketLibrary.Client client3;
        static void Main(string[] args)
        {
            client = new SocketLibrary.Client("192.168.0.222", 60000);//此处输入自己的计算机IP地址,端口不能改变
            client.MessageReceived += _client_MessageReceived;
            client.MessageSent += client_MessageSent;
            client.StartClient();
            client2 = new SocketLibrary.Client("192.168.0.222", 60000);//此处输入自己的计算机IP地址,端口不能改变
            client2.MessageReceived += _client_MessageReceived;
            client2.MessageSent += client_MessageSent;
            client2.StartClient();
            client3 = new SocketLibrary.Client("192.168.0.222", 60000);//此处输入自己的计算机IP地址,端口不能改变
            client3.MessageReceived += _client_MessageReceived;
            client3.MessageSent += client_MessageSent;
            client3.StartClient();

            while (true)
            {
                System.Threading.Thread.Sleep(200);
                sendMsg();
                sendMsg2();
                sendMsg3();
            }
        }
        public static object lockk = new object();
        private static void client_MessageSent(object sender, SocketLibrary.SocketBase.MessageEventArgs e)
        {
            Console.WriteLine(e.Connecction.ConnectionName + "," + e.Message.MessageBody + "" + "发送成功");
            lock (lockk)
            {
                switch (e.Message.MessageBody.Substring(3))
                {
                    case "1":
                        a++;
                        break;
                    case "2":
                        b++;
                        break;
                    case "3":
                        c++;
                        break;
                    default:
                        break;
                }
                Console.WriteLine($"{a},{b},{c}");
            }
        }
        private static void _client_MessageReceived(object sender, SocketLibrary.SocketBase.MessageEventArgs e)
        {
            string msg = e.Message.MessageBody;

            Console.WriteLine(e.Connecction.ConnectionName +""+ msg + ":发送成功");
        }
        private static void sendMsg()
        {
            SocketLibrary.Connection connection;
            client.Connections.TryGetValue(client.ClientName, out connection);
            if (connection != null)
            {
                SocketLibrary.Message message = new SocketLibrary.Message(SocketLibrary.Message.CommandType.SendMessage, "消息体1");
                connection.messageQueue.Enqueue(message);
            }
            else
            {
                Console.WriteLine("发送失败!");
            }
        }
        private static void sendMsg2()
        {
            SocketLibrary.Connection connection;
            client2.Connections.TryGetValue(client2.ClientName, out connection);
            if (connection != null)
            {
                SocketLibrary.Message message = new SocketLibrary.Message(SocketLibrary.Message.CommandType.SendMessage, "消息体2");
                connection.messageQueue.Enqueue(message);
            }
            else
            {
                Console.WriteLine("发送失败!");
            }
        }
        private static void sendMsg3()
        {
            SocketLibrary.Connection connection;
            client3.Connections.TryGetValue(client3.ClientName, out connection);
            if (connection != null)
            {
                SocketLibrary.Message message = new SocketLibrary.Message(SocketLibrary.Message.CommandType.SendMessage, "消息体3");
                connection.messageQueue.Enqueue(message);
            }
            else
            {
                Console.WriteLine("发送失败!");
            }
        }

    }
}


服务端调用示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SocketServerTest
{

    class Program
    {
        static int i = 0;
        static SocketLibrary.Server _server;
        static void Main(string[] args)
        {
            _server = new SocketLibrary.Server("192.168.0.222", 60000);
            _server.MessageReceived += _server_MessageReceived;

            _server.Connected += _server_Connected;
            _server.ConnectionClose += _server_ConnectionClose;
            _server.MessageSent += _server_MessageSent;
            _server.StartServer();
            while (true)
            {
                System.Threading.Thread.Sleep(200);
            }
        }
        static void _server_MessageSent(object sender, SocketLibrary.SocketBase.MessageEventArgs e)
        {
            Console.WriteLine("服务端发送成功");
        }
        private static void _server_ConnectionClose(object sender, SocketLibrary.SocketBase.ConCloseMessagesEventArgs e)
        {
            Console.WriteLine(e.ConnectionName + "连接关闭");
        }
        private static void _server_Connected(object sender, SocketLibrary.Connection e)
        {
            Console.WriteLine(e.ConnectionName + "连接成功");
        }
        public static int a = 0;
        public static int b = 0;
        public static int c = 0;
        public static object lockk = new object();
        private static void _server_MessageReceived(object sender, SocketLibrary.SocketBase.MessageEventArgs e)
        {
            lock (lockk)
            {
                string ss = e.Message.MessageBody;
                int d = Convert.ToInt32( ss.Substring(3));
                switch (d)
                {
                    case 1:
                        a++;
                        break;
                    case 2:
                        b++;
                        break;
                    case 3:
                        c++;
                        break;
                    default:
                        break;
                }
            }
            Console.WriteLine($"{a},{b},{c}");
            Console.WriteLine(e.Message.MessageBody);
            SendMsg();
        }


        private static void SendMsg()
        {
            i += 1;
            SocketLibrary.Connection connection = null;
            foreach (var keyValue in _server.Connections)
            {
                if ("192.168.2.208".Equals(keyValue.Value.NickName))
                {
                    connection = keyValue.Value;
                }
            }
            if (connection != null)
            {
                SocketLibrary.Message message = new SocketLibrary.Message(SocketLibrary.Message.CommandType.SendMessage, i + "123");
                connection.messageQueue.Enqueue(message);
            }
            else
            {
                Console.WriteLine("发送失败!");
            }
        }

    }
}



--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年5月    »
12345
6789101112
13141516171819
20212223242526
2728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864