您的位置:首页 > 编程语言 > C#

C#线程池多线程Socket通讯 服务器端和客户端示例

2016-12-29 00:00 537 查看
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace socket2016
{
class Program
{
static void Main(string[] args)
{
//服务器端
Socket sktltn = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sktltn.Bind(new IPEndPoint(IPAddress.Any, 12345));
sktltn.Listen(30);
while (true)
{
Socket sk = sktltn.Accept();
//ThreadPool.SetMaxThreads(10, 10);
ThreadPool.QueueUserWorkItem(p =>
{
Socket skc = (Socket)sk;
byte[] array = new byte[10240];
int offset = 0;
while (true)
{
int len = skc.Receive(array, offset, array.Length - offset, SocketFlags.None);
if (len == 0)
{
break;
}
offset += len;
}
string content = Encoding.UTF8.GetString(array, 0, offset);
Console.WriteLine("> " + content);
}, sk);
}
}
}
}


using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace socket2016Client
{
class Program
{
static void Main(string[] args)
{
//客户端
Console.WriteLine("输入文字,回车发送");
while (true)
{
string str = Console.ReadLine();
if (str.Length > 0)
{
Socket sktc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sktc.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345));
byte[] bytes = Encoding.UTF8.GetBytes(str);
int offset = 0;
while ((offset += sktc.Send(bytes, offset, bytes.Length - offset, SocketFlags.None)) < bytes.Length) ;
sktc.Close();
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: