Sockets tcp服务器只接受一些连接

Sockets tcp服务器只接受一些连接,sockets,tcp,erlang,gen-tcp,Sockets,Tcp,Erlang,Gen Tcp,我有一个tcp服务器和一个客户端。客户端生成1000个进程,每个进程都试图连接到tcp服务器。我可以看到tcp服务器正在接受245个连接,并拒绝所有其他连接。每次,服务器都会接受前245个 修正: 试图增加待办事项属性,但无效。 尝试在每个进程生成后调用timer:sleep(N),以便降低tcp服务器接受客户端的速率。失败了 服务器和客户端: accept(LSocket) -> case gen_tcp:accept(LSocket) of {ok, Socket}

我有一个tcp服务器和一个客户端。客户端生成1000个进程,每个进程都试图连接到tcp服务器。我可以看到tcp服务器正在接受245个连接,并拒绝所有其他连接。每次,服务器都会接受前245个

修正: 试图增加待办事项属性,但无效。
尝试在每个进程生成后调用timer:sleep(N),以便降低tcp服务器接受客户端的速率。失败了

服务器和客户端:

 accept(LSocket) ->
   case gen_tcp:accept(LSocket) of
     {ok, Socket} ->
       io:format("Accepted ~n"),
       {sockets, List} = hd(ets:lookup(csockets, sockets)),
       NewList = [Socket | List],
       ets:insert(csockets, {sockets, NewList}),
       Pid = spawn(fun() ->
        loop(Socket, 0)
              end),
       gen_tcp:controlling_process(Socket, Pid),
       accept(LSocket);
     {error, closed} ->
       error
    end.
客户:

    send(State = #state{low = Low, high = Low}) ->
      NewState = receive_sockets(0, Low, State),
      NewState;
      send(State = #state{low = Low}) ->
      N = Low rem 2,
      Dest = lists:nth(2, State#state.dest),
      loop(self(), Dest, Low),
      NewState = State#state{low = Low + 1},
      send(NewState).

   loop(From, {IP, Port}, Low) ->
     case gen_tcp:connect(IP, Port, []) of
      {ok, Socket} ->
        gen_tcp:send(Socket, integer_to_binary(Low)),
        From ! {Low, Socket},
        Pid = spawn(?MODULE, receive_from_other_users, []),
        gen_tcp:controlling_process(Socket, Pid);
      _Else ->
        io:format("The connection failed ~n"),
        loop(From, {IP, Port}, Low)
   end.

有四个失败错误代码:Reason=closed | timeout | system | u limit | inet:posix()。最好捕获指定的错误代码,然后告诉您根本原因。服务器端的实现应该有所改进。在这种情况下,而不是{ok,Socket}服务器停止接受连接,导致新的传入连接被拒绝。您需要提供获得的确切错误返回值,或者需要发布足够的代码,以便其他人可以自己运行。您还应该包括您所使用的操作系统的详细信息,以及如何根据max文件描述符和其他影响基于TCP的应用程序的设置对其进行配置。我正在使用OSX。