写了一个socket链接的小程序,本来是要做并发连接数的检查的,现在不知道是哪里的问题,在循环创建链接的时候一次性创建大于1800个链接的时候出现链接没有正常连上去的问题,而且能连上去的只有一百多个,不知道大家有没有这方面的问题,还是程序处理太快了,服务器不响应了,导致我的链接断开了。
请高手指教,谢谢!using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.168.5.196"), 7010);
for (int i = 1; i < 1800; i++)
{
Socket socket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
socket.Connect("192.168.5.196", 7010);
if (socket.Connected)
{
Console.WriteLine("连接成功"+i);
}
}
Console.ReadLine();
for (int i = 1; i < 1800; i++)
{
Socket socket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.Connect("192.168.5.196", 7010);
if (socket.Connected)
{
Console.WriteLine("连接成功" + i);
}
}
Console.ReadLine();
}
}
}
请高手指教,谢谢!using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.168.5.196"), 7010);
for (int i = 1; i < 1800; i++)
{
Socket socket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
socket.Connect("192.168.5.196", 7010);
if (socket.Connected)
{
Console.WriteLine("连接成功"+i);
}
}
Console.ReadLine();
for (int i = 1; i < 1800; i++)
{
Socket socket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.Connect("192.168.5.196", 7010);
if (socket.Connected)
{
Console.WriteLine("连接成功" + i);
}
}
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net; //网络引用
using System.Net.Sockets; //网络引用
using System.Threading; //线程引用namespace ConsoleApplication1
{
class connect
{
/// <summary>保存连接的所有用户</summary>
private List<User> userList = new List<User>(); public void Socketconnect()
{
lock(this)
{
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.168.5.196"), 7010);
for (int i = 1; i < 1800; i++)
{
Socket socket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
socket.Connect("192.168.5.196", 7010);
NetworkStream stream = new NetworkStream(socket);
if (socket.Connected)
{
User user = new User(socket);
userList.Add(user);
Thread threadReceive = new Thread(ReceiveData);
threadReceive.Start(user);
Console.WriteLine("当前链接是:"+ socket.LocalEndPoint);
Console.WriteLine("当前连接用户数:"+ userList.Count);
}
}
}
}
private void ReceiveData(object userState)
{
User user = (User)userState;
Socket newclient = user.client;
Byte[] buffer = new Byte[1024];
newclient.Receive(buffer);
}
static void Main(string[] args)
{
for (int i = 1; i < 3; i++)
{
Thread thread;
connect con = new connect();
thread = new Thread(new ThreadStart(con.Socketconnect));
thread.IsBackground = true;
thread.Start();
}
Console.ReadLine();
}
}
}using System.Net.Sockets;
using System.IO;
namespace ConsoleApplication1
{
class User
{
public Socket client { get; private set; }
public BinaryReader br { get; private set; }
public BinaryWriter bw { get; private set; }
public string userName { get; set; }
public User(Socket client)
{
this.client = client;
NetworkStream networkStream = new NetworkStream(client);
br = new BinaryReader(networkStream);
bw = new BinaryWriter(networkStream);
}
public void Close()
{
br.Close();
bw.Close();
client.Close();
}
}
}