2012年10月26日,星期五
线程池*
TCP和UDP的区别*
手动创建线程:
Thread thread = new Thread(new Thread.Start(DemoMethod));
thread.IsBackground = true;
thread.Name = "xqt";
thread.Priority = ThreadPriority.Highest;//设置线程的级别
thread.Start();
static void DemoMethod()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
}
thread.IsBackground = true;
thread.Name = "xqt";
thread.Priority = ThreadPriority.Highest;//设置线程的级别
thread.Start();
static void DemoMethod()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
}
Socket通信的模型:
服务器端:
-创建Socket:寻址方式,传输的方式,协议————只负责接听
-绑定一个Host地址和端口:端口同一时间只能被一个进程占用;
-开启侦听:Linsten();
-接收用户的请求:Accept();————创建一个新的通信套接字;
-客户端关闭Socket时,就关闭了通信Socket;
客户端:
-创建Socket
-连接到服务器端——指定IP和端口
-与服务器端新创建的套接字进行通信
-可进行Send和Recive了
-客户端可调用SocketShutdown关闭Socket
-直接Socket.Close()关闭时,服务器端会报异常,除非手动关闭;
-创建Socket:寻址方式,传输的方式,协议————只负责接听
-绑定一个Host地址和端口:端口同一时间只能被一个进程占用;
-开启侦听:Linsten();
-接收用户的请求:Accept();————创建一个新的通信套接字;
-客户端关闭Socket时,就关闭了通信Socket;
客户端:
-创建Socket
-连接到服务器端——指定IP和端口
-与服务器端新创建的套接字进行通信
-可进行Send和Recive了
-客户端可调用SocketShutdown关闭Socket
-直接Socket.Close()关闭时,服务器端会报异常,除非手动关闭;
//socket通信模型,服务器端
- Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
- IPEndPoint endPoint = new IPEndPoint(ipAddress, 8888);
- socket.Bind(endPoint);
- socket.Listen(10);
- Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
- IPEndPoint endPoint = new IPEndPoint(ipAddress, 8888);
- socket.Bind(endPoint);
- socket.Listen(10);
//客户端:
- Socket clientSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
- IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"),8888);
- clientSocket.Connect(endPoint);
- Socket clientSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
- IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"),8888);
- clientSocket.Connect(endPoint);
SocketHelper:
public class SocketHelper
{
//创建服务器端socket
//创建一个监听一个ip和端口的socket
//传递两个参数:ip,端口号
public static Socket CreateListenSocket(string ip,int port)
{
if(string.IsNullOrEmpty(ip) || port>65535 || port < 0)
{
return null;
}
Socket socket = new Socket(AddressFamily.InterNetWork,SocketType.Stream,ProtocolType.Tcp);
IPAddress ipAddress = IPAddress.Parse(ip);
IPEndPoint endpoint = new IPEndPoint(ipAddress,port);
socket.Bind(endpoint);
socket.Listen(10);
return socket;
}
//客户端连接服务器
public static Socket ConnectServer(string ip,int port)
{
Socket clientSocket = null;
try
{
clientSocket = new Socket(AddressFamily.InterNetWork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(ip),port);
clientSocket.Connect(endPoint);
}
finally
{
//记录日志
}
return clientSocket;
}
}
{
//创建服务器端socket
//创建一个监听一个ip和端口的socket
//传递两个参数:ip,端口号
public static Socket CreateListenSocket(string ip,int port)
{
if(string.IsNullOrEmpty(ip) || port>65535 || port < 0)
{
return null;
}
Socket socket = new Socket(AddressFamily.InterNetWork,SocketType.Stream,ProtocolType.Tcp);
IPAddress ipAddress = IPAddress.Parse(ip);
IPEndPoint endpoint = new IPEndPoint(ipAddress,port);
socket.Bind(endpoint);
socket.Listen(10);
return socket;
}
//客户端连接服务器
public static Socket ConnectServer(string ip,int port)
{
Socket clientSocket = null;
try
{
clientSocket = new Socket(AddressFamily.InterNetWork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(ip),port);
clientSocket.Connect(endPoint);
}
finally
{
//记录日志
}
return clientSocket;
}
}