1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
云烟成雨(翻自 房东的猫) - 周玥
00:00 / 04:00
An audio error has occurred, player will skip forward in 2 seconds.

作曲 : 少年佩

作词 : 墨鱼丝

作曲 : 少年佩

作词 : 墨鱼丝

制作人:黎偌天

编曲:黎偌天

监制:李纤橙

你的晚安 是下意识的恻隐

我留至夜深 治疗失眠梦呓

那封手写信 留在行李箱底

来不及 赋予它旅途的意义

若一切 都已云烟成雨

我能否 变成淤泥

再一次 沾染你

若生命 如过场电影

Oh让我再一次 甜梦里惊醒

我多想再见你

哪怕匆匆一眼就别离

路灯下昏黄的剪影

越走越漫长的林径

我多想再见你

至少玩笑话还能说起

街巷初次落叶的秋分

渐行渐远去的我们

若一切 都已云烟成雨

我能否 变成淤泥

再一次 沾染你

若生命 如过场电影

Oh让我再一次 甜梦里惊醒

我多想再见你

哪怕匆匆一眼就别离

路灯下昏黄的剪影

越走越漫长的林径

我多想再见你

至少玩笑话还能说起

街巷初次落叶的秋分

渐行渐远去的我们

站台 汽笛响起

想念是你的声音

我们提着过去 走入人群

寻找着一个位置 安放自己

我多想再见你

哪怕匆匆一眼就别离

路灯下昏黄的剪影

越走越漫长的林径

我多想再见你

至少玩笑话还能说起

街巷初次落叶的秋分

渐行渐远去的我们

C#实现局域网聊天 通讯 Socket TCP 多人

程序分别为服务端与客户端,服务端创建套接字使用多线程侦听多客户端请求

代码需要引用System.Net;和System.Net.Socket;这两个类

分享源码demo:https://pan.baidu.com/s/10RuE9Vk0cIoxY91uzx4Gig     提取码:4eds

运行图:

服务端

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace ConsoleServer
 7 {
 8     class Program
 9     {
10         static void Main(string[] args)
11         {
12             ServerControl Server = new ServerControl();//初始化Socket
13             Server.Start();//启动侦听连接
14             //Console.WriteLine("123");
15             Console.Read();
16         }
17     }
18 }
展开查看代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Net.Sockets;
 6 using System.Net;
 7 using System.Threading;
 8 
 9 namespace ConsoleServer
10 {
11     public class ServerControl
12     {
13         public Socket ServerSocket;
14         public List<Socket> ClientList=null;//客户端集合
15 
16         /// <summary>
17         /// 构造函数
18         /// </summary>
19         public ServerControl()
20         {
21             //创建套接字,ipv4寻址方式,套接字类型,传输协议
22             ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
23             ClientList=new List<Socket>();//实例化客户端接入集合介入
24         }
25 
26         public void Start()
27         {
28             ServerSocket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),1231));//绑定IP和端口
29             ServerSocket.Listen(10000);//支持最多连接数
30             Console.WriteLine("start server succeed");
31 
32             //当有客户接入时当前线程会被挂起,每次新接入客户端创建独立线处理
33             Thread ThreadAccept = new Thread(Accept);
34             ThreadAccept.IsBackground = true;//设置为后台线程
35             ThreadAccept.Start();//启动线程
36 
37         }
38 
39         private void Accept()
40         { 
41             Socket Client = ServerSocket.Accept();//客户端接入当前线程挂起
42             IPEndPoint point=Client.RemoteEndPoint as IPEndPoint;//将远端节点转为ip和端口
43             Console.WriteLine("IP {0}:{1} connect succeed",point.Address,point.Port);//显示接入信息
44             ClientList.Add(Client);//将此连接添加到客户集合
45 
46             //接收消息只处理一次,线程被挂起,创建新线程处理其新消息
47             Thread ThreadReceive = new Thread(Receive);
48             ThreadReceive.IsBackground = true;//设置为后台线程
49             ThreadReceive.Start(Client);//启动线程
50             Accept();//回掉处理新接入客户端
51         }
52 
53         /// <summary>
54         /// 处理收到的消息
55         /// </summary>
56         /// <param name="obj"></param>
57         private void Receive(object obj)
58         {
59             Socket Client = obj as Socket;
60             IPEndPoint point = Client.RemoteEndPoint as IPEndPoint;//将远端节点转为ip和端口
61             try
62             {
63                 byte[] ByteReceive = new byte[1024];//消息数组
64                 int ReceiveLenght = Client.Receive(ByteReceive);//只处理一次消息,此处会被挂起
65                 string msg = point.Address + "[" + point.Port + "]:" + Encoding.UTF8.GetString(ByteReceive, 0, ReceiveLenght);
66                 Console.WriteLine(msg);//打印收到的消息
67                 Broadcast(Client, msg);//广播消息
68       
69                 Client.Send(Encoding.UTF8.GetBytes(DateTime.Now.ToString()));//回发当前时间给消息源
70                 Receive(Client);//回调处理新消息
71             }
72             catch
73             {
74                 ClientList.Remove(Client);//当客户端断开,从客户端集合移除该客户端
75                 Console.WriteLine("{0}[{1}]:断开连接", point.Address, point);//打印提示信息
76             }
77 
78         }
79 
80         /// <summary>
81         /// 广播消息
82         /// </summary>
83         /// <param name="cli"></param>
84         /// <param name="msg"></param>
85         public void Broadcast(Socket cli,string msg)
86         {
87             foreach (var  item in ClientList )//遍历所有客户端
88             {
89                 if (item != cli)
90                     item.Send(Encoding.UTF8.GetBytes(msg));//给除数据源以外客户端发送广播消息
91             }
92         }
93     }
94 }
展开查看代码

客户端

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace ConsoleClient
 7 {
 8     class Program
 9     {
10         static void Main(string[] args)
11         {
12             ClientControl Client = new ClientControl();//初始化Socket
13             Client.Connect("127.0.0.1",1231);//连接到服务器
14             Console.WriteLine("Please enter the content to send,Enter exit to exit!");//提示信息
15             string msg=Console.ReadLine();//输入
16             while (msg!="exit")//判断是否退出
17             {
18                 Client.Send(msg);//发送消息
19                 msg = Console.ReadLine();//输入消息
20 
21             }
22             
23         }
24     }
25 }
展开查看代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Net.Sockets;
 6 using System.Threading;
 7 
 8 namespace ConsoleClient
 9 {
10     public class ClientControl
11     {
12         private Socket ClientSocket;
13 
14         public ClientControl()
15         {
16             //创建套接字,ipv4寻址方式,套接字类型,传输协议
17             ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
18         }
19 
20         /// <summary>
21         /// 连接到服务器
22         /// </summary>
23         /// <param name="IP"></param>
24         /// <param name="Port"></param>
25         public void Connect(string IP, Int32 Port)
26         {
27             try
28             {
29                 ClientSocket.Connect(IP, Port);//连接到指定服务器
30                 Console.WriteLine("connect server succeed ok!");//提示信息
31                 //收到消息是线程会被挂起,创建新线程处理收到的消息
32                 Thread ThreadReceive = new Thread(Receive);
33                 ThreadReceive.IsBackground = true;
34                 ThreadReceive.Start();
35             }
36             catch(SocketException e)
37             {
38                 Console.WriteLine("无法连接到{0}:{1}{2}",IP,Port,e);
39             }
40         }
41 
42         /// <summary>
43         /// 发送消息
44         /// </summary>
45         /// <param name="msg"></param>
46         public void Send(string msg)
47         { 
48             ClientSocket.Send(Encoding.UTF8.GetBytes(msg));
49         }
50 
51         /// <summary>
52         /// 接收消息
53         /// </summary>
54         private void Receive()
55         {
56             try
57             {
58                 byte[] ByteReceive = new byte[1024];
59                 int ReceiveLenght = ClientSocket.Receive(ByteReceive);//此处线程会被挂起
60                 Console.WriteLine("{0}", Encoding.UTF8.GetString(ByteReceive, 0, ReceiveLenght));
61                 Receive();
62             }
63             catch 
64             {
65                 Console.WriteLine("服务器已断开");
66             }
67         }
68     }
69 }
展开查看代码

 

posted @ 2020-05-16 21:19  阿刀-  阅读(1400)  评论(0编辑  收藏  举报