多线程在网络编程中的应用

一.服务器端:

2010040118261137.png

Thradtcpserver.cs

 

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
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);
server.Listen(
20 );
Console.WriteLine(
" 等待客户机进行连接... " );

while ( true )
{
Socket client
= server.Accept();
ClientThread newClient
= new ClientThread(client);
Thread newThread
= new Thread( new ThreadStart(newClient.ClientService));
newThread.Start();
Thread.Sleep(
100 ); // 保证执行newThread线程
}

}
}

 

 

ClientThread.cs

 

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
class ClientThread
{
public static int connections = 0 ; // 变量表示连接数
public Socket server;
int i;

public ClientThread(Socket clientsocket)
{
this .server = clientsocket;
}
public void ClientService()
{
string data = null ;
byte [] bytes = new byte [ 1024 ];
if (server != null )
{
connections
++ ;
}
Console.WriteLine(
" 新客户端连接建立:{0} 个连接数 " , connections);
while (server.Connected)
{
try
{
i
= server.Receive(bytes);
}
catch
{
break ;
}
if (i != 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);
server.Send(msg);
Console.WriteLine(
" 发送的数据:{0} " , data);
}

}
// 关闭套接字
server.Close();
connections
-- ;
Console.WriteLine(
" 客户端关闭连接:{0}个连接数 " , connections);
}

}

Program.cs

 

 
  
static void Main( string [] args)
{
Threadtcpserver instance
= new Threadtcpserver();
}

 

 

 

二.客户端:

 

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
class Program
{
static void Main( string [] args)
{
Socket client;
byte [] buf = new byte [ 1024 ];
string input;
IPAddress local
= IPAddress.Parse( " 127.0.0.1 " );
IPEndPoint iep
= new IPEndPoint(local, 13000 );
try
{
client
= new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(iep);
}
catch
{
Console.WriteLine(
" 无法连接服务器! " );
return ;
}
finally
{

}

while ( true )
{
input
= Console.ReadLine();
if (input == " exit " )
{
break ;
}
client .Send (Encoding .ASCII .GetBytes(input ));
int rec = client .Receive (buf);
Console .WriteLine (Encoding .ASCII .GetString (buf ,
0 ,rec));
}
Console .WriteLine (
" 断开服务器连接... " );
client .Close ();
}
}

 

转载于:https://www.cnblogs.com/hahacjh/archive/2010/04/01/1702515.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值