📄 multithreadclient.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets; //可以使用套接字
using System.Threading; //可以使用多线程
namespace threadtcpclient
{
class Threadtcpserver
{
private Socket server;
public Threadtcpserver()
{
IPAddress local = IPAddress.Parse("127.0.0.1");
IPEndPoint iep = new IPEndPoint(local, 13000);
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 将套接字与本地终结点绑定
server.Bind(iep);
//在本地13000端口号上进行监听
server.Listen(20);
Console.WriteLine("等待客户机进行连接......");
while (true)
{
// 得到包含客户端信息的套接字
Socket client = server.Accept();
//创建消息服务线程对象
ClientThread newclient = new ClientThread(client);
//把ClientThread 类的ClientService方法委托给线程
Thread newthread = new Thread(new ThreadStart(newclient.ClientService));
// 启动消息服务线程
newthread.Start();
}
}
static void Main(string[] args)
{
Threadtcpserver instance = new Threadtcpserver();
}
}
class ClientThread
{
//connections变量表示连接数
public static int connections = 0;
public Socket service;
int i;
public ClientThread(Socket clientsocket)
{
//service对象接管对消息的控制
this.service = clientsocket;
}
public void ClientService()
{
String data = null;
byte[] bytes = new byte[1024];
if (service != null)
{
connections++;
}
Console.WriteLine("新客户连接建立:{0} 个连接数", connections);
while ((i = service.Receive(bytes)) != 0)
{
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
Console.WriteLine("收到的数据: {0}", data);
// 处理客户端发来的消息,这里是转化为大写字母
data = data.ToUpper();
byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
// 发送一条应答消息
service.Send(msg);
Console.WriteLine("发送的数据: {0}", data);
}
//关闭套接字
service.Close();
connections--;
Console.WriteLine("客户关闭连接:{0} 个连接数", connections);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -