C++建立和運用socket連結池
阿新 • • 發佈:2019-02-03
public class XieGouSocket
{
public Socket m_socket; //Socket物件
public bool m_isFree; //判斷能不能空閒
public int m_index; //在連結快取池中的索引值
}
下面的函式是建立 socket連結池,這裡為了使程式碼更加清晰,我特地把異常處理部分全部取掉了。
public XieGouSocket[] m_socket; //先定義個緩衝池
public void CreateSocketPool()
{
string ip= “127.0.0.1”;
string port= 2003;
IPAddress serverIp=IPAddress.Parse(ip);
int serverPort=Convert.ToInt32(port);
IPEndPoint iep=new IPEndPoint(serverIp,serverPort);
m_socket = new XieGouSocket[200];
for(int i =0; i < 200 ; i ++)
{
m_socket[i] = new XieGouSocket();
m_socket[i].m_index = i ;
m_socket[i].m_isFree = true;
m_socket[i].m_socket =new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
m_socket[i].m_socket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.SendTimeout,1000);
m_socket[i].m_socket.Connect(iep);
}
}
{
public Socket m_socket; //Socket物件
public bool m_isFree; //判斷能不能空閒
public int m_index; //在連結快取池中的索引值
}
下面的函式是建立 socket連結池,這裡為了使程式碼更加清晰,我特地把異常處理部分全部取掉了。
public XieGouSocket[] m_socket; //先定義個緩衝池
public void CreateSocketPool()
{
string ip= “127.0.0.1”;
string port= 2003;
IPAddress serverIp=IPAddress.Parse(ip);
int serverPort=Convert.ToInt32(port);
IPEndPoint iep=new IPEndPoint(serverIp,serverPort);
m_socket = new XieGouSocket[200];
for(int i =0; i < 200 ; i ++)
{
m_socket[i] = new XieGouSocket();
m_socket[i].m_index = i ;
m_socket[i].m_isFree = true;
m_socket[i].m_socket =new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
m_socket[i].m_socket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.SendTimeout,1000);
m_socket[i].m_socket.Connect(iep);
}
}